[英]Function called infinitely in ng-repeat block
我有一个控制器,我在其中显示页面列表。 我必须根据其中存在的一些标记消除一些列表项。 因此,我编写了一个简单的函数,该函数将返回布尔值,并将在ng-show指令中使用该值来隐藏项目。 在ng-repeat块中多次调用该函数。 我的理解是,如果我的数组长度为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;
}
我将尝试确保任何函数调用都在控制器范围内
即。 $ 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读取布尔值
$scope.items = [
{name: "a", flag: true},
{name: "b", flag: true},
{name: "c", flag: false}
];
和输出是..
a
b
希望这可以帮助。
您可以使用Angular的内置filter
器filter
器:
<li ng-repeat="item in items | filter: { flag: true }">{{item.name}}</li>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.