Angularjs 执行每个摘要周期的ng中继器
我试图了解angular 1 digest循环是如何工作的,以及它们是如何影响现有范围的。我有两个控制器,其中一个是使用带转发器的角度材料。第二个控制器是一个简单的按钮单击事件。这两个事件都打印到控制台以查看发生了什么 我看到的是,每次我点击第二个控制器上的按钮,中继器都会重新运行它的整个计算 这就是angular的工作原理吗?请参阅附件中的以下代码笔-单击按钮时,中继器每次都会在第一个控制器上重新运行。我假设每次在任何控制器上发生任何操作时都会发生这种情况——这看起来简直是疯了 中继器代码如下所示:Angularjs 执行每个摘要周期的ng中继器,angularjs,Angularjs,我试图了解angular 1 digest循环是如何工作的,以及它们是如何影响现有范围的。我有两个控制器,其中一个是使用带转发器的角度材料。第二个控制器是一个简单的按钮单击事件。这两个事件都打印到控制台以查看发生了什么 我看到的是,每次我点击第二个控制器上的按钮,中继器都会重新运行它的整个计算 这就是angular的工作原理吗?请参阅附件中的以下代码笔-单击按钮时,中继器每次都会在第一个控制器上重新运行。我假设每次在任何控制器上发生任何操作时都会发生这种情况——这看起来简直是疯了 中继器代码如下
<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>
{{item}}已选定
起初,我以为我的角度有问题,但这似乎发生在任何充满代码笔吼叫的地方
如果您不希望ng repeat在更改时重新运行,请在ng repeat中使用“track by$index”(按$index跟踪)是,这正是它的工作原理。这就是双向绑定的本质,您不断地检查两个值中的一个是否发生了更改。 如果要关闭该功能并使用一次性绑定,可以使用::语法
请参阅文档:(您需要向下滚动到一次性绑定。遗憾的是没有锚定:D)这就是它应该如何工作的。脏检查循环对整个应用程序运行多次,直到作用域的状态稳定为止。这是一种低效的触发事件的方式。但它也是经过设计的——它允许您使用POJO