繁体   English   中英

在ng-repeat块中无限调用的函数

[英]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的内置filterfilter器:

<li ng-repeat="item in items | filter: { flag: true }">{{item.name}}</li>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM