AngularJS-सशर्त रूप से आइटम लौटने के लिए ng-repeat के साथ एक कस्टम फ़िल्टर को कैसे व्यवस्थित करें




angular-filters (2)

मेरे पास एक एनजी-दोहराना है जो प्रिंट आइटम सूचीबद्ध करता है। मैं एक कस्टम फ़िल्टर लिखना चाहता हूं ताकि सूची आइटम प्रिंट हो जाए, केवल तभी जब कोई शर्त सत्य हो।

मुझे लगता है कि संरचना गलत है क्योंकि ऐसा लगता है कि वेरिएबल्स फ़िल्टर के माध्यम से पारित नहीं हो रहे हैं।

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;
        }
    }
});

आप अधिक संक्षेप समाधान के लिए Array.filter का उपयोग कर सकते हैं:

app.filter('matchAccessLevel', function() {
    return function( items, userAccessLevel ) {
      return items.filter(function(element){
        return userAccessLevel >= element.minAccess;
      });
    }
});

प्लंकर पर जांचें


कॉफीस्क्रिप्ट प्रेमियों के लिए:

userApp.filter 'matchAccessLevel', ->
  (items, userAccessLevel) ->
    item for item in items when userAccessLevel >= item.minAccess




angular-filters