0

これは、私が調べるのを手伝ってほしい奇妙な動作です: http://jsfiddle.net/m3Z8r/2/

Angular 呼び出しsymbolsLength()が予想よりも多く機能する理由に興味があります。

  1. 最初から2回呼び出されました(1回だけ呼び出されると予想されていました)
  2. template1からに切り替えると、template2再び起動します (ただし、明らかな必要はありません) 。

initialtemplateNameをに設定すると"template2"、関数symbolsLength()は呼び出されませんが、これで問題ありません。

誰か、ここで何が起こっているのか説明してくれませんか?

symbolsLength()PS と書くだけなので、関数が必要ないことは理解していますが{{ symbols.length }}、この関数が非常に重要なこと、たとえばサービスに連絡することを想定してみましょう。

4

1 に答える 1

1

1.最初から2回呼び出されました(1回だけ呼び出されると予想されていました)

コードをステップスルーしたところ、これは、バインディングに対して作成された各ウォッチ関数が最後の値のプロパティを保持し、最初のフェーズで最後の値がダーティフラグをtrueに設定する式の値とは異なるため、新しい値がトリガーされるためです。パス。

2. template1からtemplate2に切り替えると、再度起動します(ただし、明らかな必要はありません)。

新しいテンプレートが含まれるとスコープ値が変更されていなくてもかまいません。新しいウォッチが作成されるため、手順1が繰り返されます。

于 2013-02-01T17:26:33.467 に答える