22

私はAngularにかなり慣れていませんが、これはちょっとおかしいと感じています。

1 つのコントローラー スコープで ng-repeat を介して複数のコレクションが表示されています。各リストには、単純なクエリを実行するための入力フィールドがあります。私は自分のコードでさまざまなフィルターをいじっていましたが、最終的にフィルター関数に console.log を入れました。フィルター関数が 1 つのリストに対して呼び出されるたびに、スコープ内のすべてのリストに対して呼び出されていることに気付きました。さらに、フィルター関数を毎回 2 回呼び出していました。したがって、3 つのコレクションがある場合、リストの 1 つをフィ​​ルター処理すると、フィルター関数が 6 回呼び出されます。

たぶん私のカスタムフィルターだと思ったので、デフォルトのフィルター機能で試してみました。同じ話。これが私のコードです:

https://dl.dropbox.com/u/905197/angular-filter-test.html

コンソールに移動して、自分の目で確かめてください:/

ここで何が間違っていますか?これはとても単純なことのように思えますが、非常に多くの作業を行っています。

4

1 に答える 1

25

これは正常であり、angularjsは「ダーティチェック」アプローチを使用するため、すべてのフィルターを呼び出して変更が存在するかどうかを確認する必要があります。この後、1つの変数(入力した変数)に変更があることを検出し、すべてのフィルターを再実行して、他の変更があるかどうかを検出します。

この質問の最初の答えを参照してください

于 2012-07-26T20:19:08.513 に答える