Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 执行每个摘要周期的ng中继器_Angularjs - Fatal编程技术网

Angularjs 执行每个摘要周期的ng中继器

Angularjs 执行每个摘要周期的ng中继器,angularjs,Angularjs,我试图了解angular 1 digest循环是如何工作的,以及它们是如何影响现有范围的。我有两个控制器,其中一个是使用带转发器的角度材料。第二个控制器是一个简单的按钮单击事件。这两个事件都打印到控制台以查看发生了什么 我看到的是,每次我点击第二个控制器上的按钮,中继器都会重新运行它的整个计算 这就是angular的工作原理吗?请参阅附件中的以下代码笔-单击按钮时,中继器每次都会在第一个控制器上重新运行。我假设每次在任何控制器上发生任何操作时都会发生这种情况——这看起来简直是疯了 中继器代码如下

我试图了解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