使用ng-repeat生成元素,但仅显示条件是否满足

时间:2014-04-22 12:14:28

标签: angularjs

我想使用ng-repeat生成元素,但只想显示某些$ scope.activeMod是否等于item的值,这里我是如何尝试但不工作。在activeMod中,值为mod1,但显示所有列表项。 HTML代码

<li ng-show="{activeMod == item.menu-mod}" ng-repeat="item in menu" ng-if="item.title != 'Home'">
    <a ng-href="{{item.href}}" class="{{item.className}}">{{item.title}}</a>
</li>

这是菜单json

{
    "title": "System",
    "menu-mod": "mod1",
    "className": "system-icon",
},
{
    "title": "Settings",
    "menu-mod": "mod2",
    "className": "settings-icon",
},
{
    "title": "Configs",
    "menu-mod": "mod3",
    "className": "config-icon",
}

2 个答案:

答案 0 :(得分:1)

试试这个;

<li ng-repeat="item in menu" ng-show="activeMod == item['menu-mod']" ng-if="item.title != 'Home'">
    <a ng-href="{{item.href}}" class="{{item.className}}">{{item.title}}</a>
</li>

希望在您的控制器中声明activeMod

答案 1 :(得分:1)

在ng-repeat声明中使用过滤器。

    <li ng-repeat="item in menu | filter: filterFunction" [...] etc.

并在控制器中:

    $scope.filterFunction = function(item){

      if(item.menu-mod === $scope.activeMod) {return true;}
      return false;

    }

有关过滤器的详细信息:

http://docs.angularjs.org/api/ng.filter:filter#parameters