4

ng-repeat が更新を完了したときにディレクティブを起動する際に AngularJS の問題が発生しています。3 つの名前付き配列があり、3 つのリンクを介して切り替えられ、選択した配列を ng-repeat で表示できます。D3 が使用するいくつかの要素属性を設定することを計画しているので、コードが終了したらいくつかのコードを起動したいと思います。

ディレクティブで scope.$last をチェックしようとしましたが、これはすべての ng-repeat プロセスの最後に呼び出されるわけではありません。一部のデータが同じままである場合、scope.$last が true に設定されない可能性があります。

http://plnkr.co/edit/hwmOlI6YrgS4H1C1h7k2?p=preview

では、ng-repeat が終了したときにディレクティブでコードをトリガーする最良の方法は何ですか?

4

1 に答える 1

10

ここにあなたのための解決策があります。最後のトリガーが毎回実行されることに注意してください。

http://plnkr.co/edit/xV1quqzorzxliS2shrP4?p=preview

$watch$last変数を指定するだけで問題なく動作します。scopeこれは、が作成されておらず、新しい値で更新されているだけの場合に役立ちます。ディレクティブは一度作成され、繰り返される変数の 1 つが値を変更するだけで、値をng-repeat最適化して更新するだけです (すべての値を削除して新しい値を再作成するのではなく)。このシナリオでは、$scope.$lastは更新された変数であり、「作成」されるものではありません。だから、あなたはそれをする必要があります$watch

于 2013-04-08T14:30:25.797 に答える