Javascript ng repeat的列表源调用次数过多
Javascript ng repeat的列表源调用次数过多,javascript,angularjs,Javascript,Angularjs,angular.module('NGTest')[ ]) .controller('ItemList',['$scope',函数($scope){ log(“ItemList控制器初始化”); var self=这个; self.count=4; self.getItems=函数(){ log(“ItemList.getItems()被调用”); 返回[]; } }]); 福 为什么两次 你需要仔细阅读角度摘要循环是如何工作的。每个周期将运行至少2个摘要,如果这些摘要中的范围发生变化,则会运
angular.module('NGTest')[
])
.controller('ItemList',['$scope',函数($scope){
log(“ItemList控制器初始化”);
var self=这个;
self.count=4;
self.getItems=函数(){
log(“ItemList.getItems()被调用”);
返回[];
}
}]);代码>
福
为什么两次
你需要仔细阅读角度摘要循环是如何工作的。每个周期将运行至少2个摘要,如果这些摘要中的范围发生变化,则会运行更多
在视图中使用函数作为ng repeat的源不是一个好主意。在控制器中获取数据并作为范围数组传递给视图
self.items= getItems();
function getItems(){
console.log("ItemList.getItems() called");
return [];
}
现在,当控制器初始化时,该函数将只被调用一次
看法
{{item}
I在我的实际应用程序中,ng repeat source中存在此函数的原因是此列表取决于同一控制器下表单控件的值。在ng repeat中使用filter
并在需要时创建自定义筛选器这并不容易,列表是通过http从数据库中检索的。在客户端保留完整列表不是一个选项。好的,我删除了函数调用,并将源代码保留为控制器的简单属性。我现在通过过滤条件表单控件中的ng change指令来更新这个属性。听起来设置起来更好
<div ng-repeat="item in lst.items">{{item}}</div>