我一直在使用ng-options为偶尔会发生变化的值构建一个选择器。在我的非玩具示例中,我在数组中有大约50个选项,我注意到每次进行更改时速度都会变慢。我发现每次我更改我的选择时,它都在重新评估ng-options。有没有办法避免这种情况?我这里有一个玩具示例:
http://jsfiddle.net/BBra9/2/
本质上,这个函数:
scope.formatItem = function (item) {
console.log('formatting item.');
return item.someProp1 + '/' + item.someProp2;
};被调用来格式化每一项以便在选择器中显示,但我希望它只在初始静态列表中的每一项上运行一次。
Chrome中的控制台在我做出选择之前总共显示了9个日志语句,之后每次更改都显示了3个日志语句。我最初的猜测是使用compile,但我希望得到一些指导。
发布于 2013-10-13 21:28:36
为什么不在一开始就运行它,并将值作为单独的属性进行缓存
for (var i=0;i< scope.someList.length ;i++){
scope.someList[i].someProp3 = scope.formatItem(scope.someList[i]);
}DEMO
https://stackoverflow.com/questions/19344409
复制相似问题