在ng-repeat块

时间:2015-04-22 13:10:10

标签: javascript angularjs

我有一个控制器,我在页面上显示一个列表。我必须根据其中的一些标志消除一些列表项。所以我编写了一个简单的函数,它将返回一个布尔值,并将在ng-show指令中使用该值来隐藏项目。在ng-repeat块中多次调用该函数。我的理解是,如果我的数组长度是n,那么除非更改数组内容/长度,否则函数应该被调用n次。

display = function(item)
{
    if(item.flag) 
       return true
    else 
       return false;
}

我的显示功能看起来像这样

<form id="myForm">
Uporabniško ime: <input id="firstName" name="firstName" type="text" /><br>
Geslo: <input id="pass" name="pass" type="text" /><br>

<input type="button" value="Submit" 
 onClick="google.script.run.withSuccessHandler(DataSaved).processForm(this.form)"
        />
</form>
<div id="Message"></div>

2 个答案:

答案 0 :(得分:1)

我将尽力确保任何函数调用都在控制器范围内

即。 $ 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

希望这有帮助。

答案 1 :(得分:0)

您可以使用Angular的内置filter过滤器:

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