微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AngularJS – 如何构造一个自定义过滤器ng-repeat有条件地返回项目

我有一个ng-repeat打印列表项。我想写一个自定义过滤器,以便列表项将打印,只有条件为真。

我似乎有错误的结构,因为它似乎变量没有传递到过滤器。

index.PHP

<div ng-show="userDetails.username" class="nav">
    <p>Menu</p>
    <li ng-repeat="menuItem in menu | matchAccessLevel:$rootScope.userDetails.accessLevel:menuItem.minAccess | orderBy:'position' ">
        <a ng-href="/angular-app/app/{{menuItem.id}}">{{menuItem.name}}</a>
    </li>
</div>

app.js

userApp.filter('matchAccessLevel',function() {
    return function( item,userAccessLevel,minAccessLevel ) {
        if( userAccessLevel >= minAccessLevel ) {
            return item;
        }
    }
});
过滤器不适用于数组中的单个项目,它们将整个数组转换为另一个数组。
userApp.filter('matchAccessLevel',function() {
  return function( items,userAccessLevel) {
    var filtered = [];
    angular.forEach(items,function(item) {
      if(userAccessLevel >= item.minAccess) {
        filtered.push(item);
      }
    });
    return filtered;
  };
});

见这plnkr

*总是检查函数的参数。这些值并不总是很明显。

filters guide

原文地址:https://www.jb51.cc/angularjs/146607.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐