避免重新评估ng选项

Avoiding reevaluation of ng-options

本文关键字:评估 ng 选项 新评估      更新时间:2023-09-26

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

为什么不在开始时运行它并将值作为单独的属性

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

演示