我在 Google 和 StackOverflow 都做了一些研究,发现了几个类似的问题,但似乎没有一个能解决或解决我的具体案例。所以这是我的问题:
在我正在处理的一些代码中,我从我的 html 调用 Controller 函数,如下所示:
<div ng-controller="MyCtrl">
<p>{{ myFunction() }}</p>
</div>
因为我在 myFunction 中进行了一些跟踪,所以我注意到该函数被调用了 4 次!
我在 JS Bin 创建了一个极简测试,在这里:http://jsbin.com/nukuhemata/1/edit?html,js,console,output
在这个简化的测试中,我的函数被调用了 3 次(有一些进步 ;-)。如果不是 {{ test() }}
我使用 {{::test() }}
正如我在其他一些答案中所建议的那样,它只会被调用两次(更多的进步)。
我是 Angular 的初学者,根据我的阅读,我认为这是正常的、预期的行为。是这样吗?如果是,为什么?如果不是,我的代码有什么问题?
最佳答案
这是正常行为,每次 $digest
循环运行时,都必须执行该函数以检查输出值是否发生变化,从而是否有新值可用于更新 DOM。
因此,最好在需要时从 Controller 更新 $scope
上的值,并在您的标记中引用它。通常不是一个有意义的差异,但如果您的函数正在为 ng-repeat
构建一个大数组,它可能会成为一个大问题。
编辑:参见 function called multiple times from template以获得更可靠的答案。
关于javascript - Controller 函数被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29714461/