猿问

AngularJS-如何使用ng-repeat构建自定义过滤器以有条件地返回项目

我有一个ng-repeat打印列表项。我想编写一个自定义过滤器,以便仅在条件为true时才打印列表项。


我似乎结构有误,因为似乎变量没有传递给过滤器。


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;

        }

    }

});


芜湖不芜
浏览 748回答 3
3回答

慕田峪7331174

您可以使用Array.filter以获得更简洁的解决方案:app.filter('matchAccessLevel', function() {&nbsp; &nbsp; return function( items, userAccessLevel ) {&nbsp; &nbsp; &nbsp; return items.filter(function(element){&nbsp; &nbsp; &nbsp; &nbsp; return userAccessLevel >= element.minAccess;&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; }});

30秒到达战场

对于CoffeeScript爱好者:userApp.filter 'matchAccessLevel', ->&nbsp; (items, userAccessLevel) ->&nbsp; &nbsp; item for item in items when userAccessLevel >= item.minAccess
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答