2015-12-23 44 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)