Javascript 为什么要多次调用ng repeat中的函数?

Javascript 为什么要多次调用ng repeat中的函数?,javascript,angularjs,Javascript,Angularjs,我想通过控制器功能提供一个ng repeat元素,如下所示: <div ng-repeat="picture in allPictures(data.pictures)"></div> 结果:调用了几次我的allPictures函数,尽管我希望只调用一次,然后对结果进行迭代 为什么??此外:我如何防止这种情况发生,并真正为图片提供只调用一次该方法?关于摘要周期的一点信息: 每当应用程序中的某些内容发生变化时,我们都需要检查这些变化会对哪些地方产生影响,并重新评估可能依赖

我想通过控制器功能提供一个
ng repeat
元素,如下所示:

<div ng-repeat="picture in allPictures(data.pictures)"></div>
结果:调用了几次我的
allPictures
函数,尽管我希望只调用一次,然后对结果进行迭代


为什么??此外:我如何防止这种情况发生,并真正为图片提供只调用一次该方法?

关于摘要周期的一点信息:

每当应用程序中的某些内容发生变化时,我们都需要检查这些变化会对哪些地方产生影响,并重新评估可能依赖于这些变化的所有地方

这就是为什么ng repeat中的函数被多次调用的原因——在应用程序中发生一些更改后,它必须检查重复列表是否相同

阅读有关摘要周期和双向数据绑定的更多信息:


我真的不会在ngRepeat属性中调用函数,因为它会产生错误和意外行为

但是说实话,我不认为你需要调用一个函数。我建议采取以下措施:

<div ng-repeat="picture in allPictures"></div>
这样将调用
$scope.getPictures
函数并创建
$scope.allPictures
。ngRepeat可以调用该集合而不是函数


另请参见my Fiddle:

在控制器中调用它,将返回值设置为作用域或控制器上的属性,然后
ng重复该操作。尽量避免使用函数在视图中显示,因为存在摘要循环。事件处理程序显然是完全不同的。您必须在控制器中准备数据。在我的例子中,我使用外部循环中的参数调用函数。