angular.js - Angular の双方向バインディングが壊れています!
伊谢尔伦
伊谢尔伦 2017-05-15 16:52:42
0
4
934

最初にコードを貼り付けます:

コントローラー:

リーリー

ディレクティブ:

リーリー

html:

リーリー

効果:

折りたたんだ状態

展開時

予備提出が完了しました。私の期待は次のとおりです:

展開されたら、折りたたまれた領域をクリックして元に戻し、scope.isFold 折りたたみフラグを変更して元の状態に戻します。

質問は次のとおりです:

バグが発生します。つまり、scope.isFold の値を変更し、scope の値が変更されたことを確認しましたが、元の値がまだページ上にあります。つまり、双方向バインディングが無効です。下の写真をご覧ください

画像の表示では、折りたたみ領域が折りたたまれています。以下のscope.isFoldの出力も通常のtrueですが、dom要素を確認したところ、正しい値になっています。コントローラーを確認しました。ディレクティブのscope.isFoldの値は正しいです。この状況は非常に憂鬱です。 。 。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
phpcn_u1582

$scope.$apply

をイベント ハンドラー関数に追加します
いいねを押す +0
洪涛

リーリー

js

リーリー
いいねを押す +0
为情所困

解決策は次のとおりです:

dom 要素を操作し、スコープの属性値を変更した後、scope.$apply によってビューが更新されます

リーリー
いいねを押す +0
黄舟

実際、多くの人が誤解をしています。つまり、リンク関数で elemnet.on のイベント監視をまだ使用しています
ngClick を使用して、リンクにscope.click 関数を記述してみてはいかがでしょうか。

サードパーティの jQuery プラグインを使用しない限り

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート