一尘不染

角度范围函数多次执行

angularjs

我已经在作用域上定义了一个函数。当我从{{}}内部的视图调用它时,它将执行X次。

控制者

function testCtrl($scope) {
   $scope.myFunc = function(name) {
       return "Hello " + name;
   }
}

的HTML

<div>{{myFunc('Joe')}}</div>

您可以在此示例中看到它:http :
//jsfiddle.net/rbRvD/2/

或使用Plunker:http://plnkr.co/edit/LLQ7cKs2fEoBwv0C5XPE

我猜这是用错误的方式完成的,但是为什么执行了那么多次呢?


阅读 197

收藏
2020-07-04

共1个答案

一尘不染

您的函数运行10次。为什么是10?为什么不100?

答案在docs中

监视听众可能会更改模型,这可能会触发其他听众触发。这可以通过重新运行观察程序直到未检测到任何更改来实现。重 运行迭代限制为10,
以防止无限循环死锁。

当您看到这种情况时,就意味着您正在更改模型,以使Angular必须重新运行摘要并再次启动手表。在特定情况下,您要调用一个更新计数器的函数,该函数将显示在页面上。当计数器值更改时,它将再次运行摘要,该摘要将调用更新计数器的函数,等等。

Angular希望您(并且确实会鼓励您)更改模型,并让视图响应这些更改,而不是相反。

2020-07-04