ng-repeater执行每个摘要周期

时间:2015-12-23 05:41:08

标签: angularjs

我试图了解角度1消化周期如何工作以及它们如何影响现有范围。我有2个控制器,其中一个使用角度材料和转发器。第二个控制器是一个简单的按钮点击事件。这两个事件都会打印到控制台以查看发生的情况。

我所看到的是每次我点击第二个控制器上的按钮时,转发器会重新运行其整个计算?

这是有角度的吗?请参阅附带的以下代码集 - 当单击该按钮时,转发器每次都在第一个控制器上重新运行。我假设每次在任何控制器上发生任何操作时都会发生这种情况 - 这看起来就像疯了一样。

转发器代码如下:

<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 Example

2 个答案:

答案 0 :(得分:0)

如果您不希望ng-repeat重新运行更改,请在ng-repeat中使用“追踪$ index”

答案 1 :(得分:0)

是的,这正是应该如何运作的。这是双向绑定的本质,您不断检查其中一个值是否发生了变化。 如果要关闭该功能并使用一次性绑定,可以使用:: syntax。

请参阅文档:https://docs.angularjs.org/guide/expression(您需要向下滚动到一次性绑定。可悲的是没有锚点:D)