1

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

4

1 回答 1

0

为什么不一开始就运行它并将值缓存为单独的属性

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

演示

于 2013-10-13T13:28:36.003 回答