2015-12-23 47 views
0

我想了解角度1摘要週期如何工作以及它們如何影響現有範圍。我有2個控制器,其中一個使用帶中繼器的角度材料。第二個控制器是一個簡單的按鈕單擊事件。這兩個事件都會打印到控制檯以查看發生了什麼。ng-repeater執行每個摘要週期

我所看到的是,每次點擊第二個控制器上的按鈕時,中繼器都會重新運行其整個計算?

這是角度是如何工作的?請參閱附加的以下代碼簿 - 單擊按鈕時,中繼器每次都會在第一個控制器上重新運行。我認爲這是每一次操作都會發生在任何控制器上 - 這看起來像是瘋狂。

中繼器的代碼如下:

<div flex="50" ng-repeat="item in items"> 
      <md-checkbox ng-checked="exists(item, selected)" ng-click="toggle(item, selected)"> 
      {{ item }} <span ng-if="exists(item, selected)">selected</span> 
      </md-checkbox> 
     </div> 

起初我還以爲有什麼不對勁,我的角度,但好像這種情況發生在任何地方充滿codepen波紋管。

Codepen Example

+0

這就是它的應該如何工作。骯髒的檢查週期會運行整個應用程序多次,直到示波器狀態穩定。這是觸發事件的低效方式。但它也是通過設計 - 它允許你使用POJOs – pixelbits

回答

0

如果你不想NG-重複上變化,然後重新運行「由$索引道」使用NG-重複

+0

剛剛嘗試過,它不起作用:/ –

0

是的,這正是它應該是怎樣工作的。這是雙向綁定的本質,你經常檢查兩個值中的一個是否改變。 如果您想關閉該功能並使用一次性綁定,則可以使用::語法。

看到文檔中:https://docs.angularjs.org/guide/expression(你需要向下滾動到一次性結合可悲的是有沒有錨:d)