我试图了解角度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>
起初我觉得我的角度有些不对劲,但似乎这种情况发生在任何地方完全可靠的下方。
答案 0 :(得分:0)
如果您不希望ng-repeat重新运行更改,请在ng-repeat中使用“追踪$ index”
答案 1 :(得分:0)
是的,这正是应该如何运作的。这是双向绑定的本质,您不断检查其中一个值是否发生了变化。 如果要关闭该功能并使用一次性绑定,可以使用:: syntax。
请参阅文档:https://docs.angularjs.org/guide/expression(您需要向下滚动到一次性绑定。可悲的是没有锚点:D)