Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免重新评估ng期权_Javascript_Angularjs - Fatal编程技术网

Javascript 避免重新评估ng期权

Javascript 避免重新评估ng期权,javascript,angularjs,Javascript,Angularjs,我一直在使用ng选项为偶尔会发生变化的值构建选择器。在我的非玩具示例中,阵列中大约有50个选项,每次进行更改时,我都会注意到速度减慢。我发现,每当我改变选择时,它都在重新评估选项。有没有办法避免这种情况?我这里有一个玩具的例子: 基本上,该功能: scope.formatItem = function (item) { console.log('formatting item.'); return item.someProp1 + '/' + item.someProp2; };

我一直在使用ng选项为偶尔会发生变化的值构建选择器。在我的非玩具示例中,阵列中大约有50个选项,每次进行更改时,我都会注意到速度减慢。我发现,每当我改变选择时,它都在重新评估选项。有没有办法避免这种情况?我这里有一个玩具的例子:

基本上,该功能:

scope.formatItem = function (item) {
    console.log('formatting item.');
    return item.someProp1 + '/' + item.someProp2;
};
正在调用以格式化要在选择器中显示的每个项目,但我只希望在初始静态列表中的每个项目上运行一次


Chrome中的控制台显示在我做出选择之前总共9条日志记录语句,之后每次更改3条日志记录语句。我最初的猜测是使用compile,但我希望得到一些指导。

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

for (var i=0;i< scope.someList.length ;i++){
   scope.someList[i].someProp3 = scope.formatItem(scope.someList[i]);
}
这可能对你有帮助