我有一个 Controller ,我在其中在页面上显示一个列表。我必须根据其中存在的一些标志来消除一些列表项。因此,我编写了一个简单的函数,它将返回一个 bool 值,并在 ng-show 指令中使用该值来隐藏项目。该函数在 ng-repeat block 中被多次调用。我的理解是,如果我的数组长度是 n,那么函数应该只被调用 n 次,除非数组内容/长度发生改变。
<ul>
<li ng-repeat="item in items" ng-show="display(item)">{{item.name}}</li>
</ul>
我的显示函数看起来像这样
display = function(item)
{
if(item.flag)
return true
else
return false;
}
最佳答案
我会尽力确保任何函数调用都在 Controller 范围内
即。 $scope.display 但是,以下内容可能有助于使其更清晰。
<!-- iterate elements in items, ie. {name: "a", flag: true} -->
<ul>
<li ng-repeat="item in items" ng-show="item.flag">{{item.name}}</li>
</ul>
并且从那时起就没有函数调用,ng-show从item.flag读取 bool 值
$scope.items = [
{name: "a", flag: true},
{name: "b", flag: true},
{name: "c", flag: false}
];
输出是..
a
b
希望这有帮助。
关于javascript - 在 ng-repeat block 中无限调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798620/