避免重新评估ng-options

时间:2013-10-13 10:57:34

标签: javascript angularjs

我一直在使用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,但我希望得到一些指导。

1 个答案:

答案 0 :(得分:0)

为什么不在开头运行它并将值作为单独的属性捕获

for (var i=0;i< scope.someList.length ;i++){
   scope.someList[i].someProp3 = scope.formatItem(scope.someList[i]);
}

DEMO