我已经在作用域上定义了一个函数。当我从{{}}内部的视图调用它时,它将执行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
我猜这是用错误的方式完成的,但是为什么执行了那么多次呢?
您的函数运行10次。为什么是10?为什么不100?
答案在docs中:
监视听众可能会更改模型,这可能会触发其他听众触发。这可以通过重新运行观察程序直到未检测到任何更改来实现。重 运行迭代限制为10, 以防止无限循环死锁。
当您看到这种情况时,就意味着您正在更改模型,以使Angular必须重新运行摘要并再次启动手表。在特定情况下,您要调用一个更新计数器的函数,该函数将显示在页面上。当计数器值更改时,它将再次运行摘要,该摘要将调用更新计数器的函数,等等。
Angular希望您(并且确实会鼓励您)更改模型,并让视图响应这些更改,而不是相反。