2016-05-30 9 views
0

i mit MEAN Stapel arbeite, ich habe viele Einträge eines Benutzers innerhalb eines Arrays wie:ausblenden Objekte innerhalb Array ng-repeat

{ bankDetails: [], 
    academics: [ [Object], [Object] ], 
    trainings: [ [Object] ], 
    username: '[email protected]', 
    accessLevel: 'worker', 
    __v: 0},` 
{ bankDetails: [], 
    academics: [ [Object], [Object] ], 
    trainings: [ [Object] ], 
    username: '[email protected]', 
    accessLevel: 'admin', 
    __v: 0} and many objects like these. 

, die ich vom Server erhalten und in vm.empDetails gespeichert:

$http.get('/employee').then(function(res) { 
     console.log(res.data); 
     vm.empDetails = res.data; 
    }, function(err) { 
     console.log(err); 
    }); 

jetzt, was ich in hTML-Datei getan haben, ist:

<tr ng-repeat="res in vm.empDetails track by $index">    
      <td>{{res.firstName}} {{res.lastName}}</td> 
       <td>{{res.jobTitle}}</td> 
       <td><md-button ng-click="vm.manageProfile(res._id)">Manage</md-button></td></tr>  

ich alle Daten, die ich immer in em gespeichert werden Sammlung und kann sie zeigen. Alles, was ich versuche zu tun ist nur Einträge, deren access_level = "worker" und wollen die Benutzer mit access_level = "admin" verstecken. Wie kann ich das tun ?? Vorschläge und Kommentare werden sehr geschätzt.

Antwort

0
<tr ng-repeat="res in vm.empDetails track by $index" ng-show="res.access_level === 'worker'"> 
    // something 
</tr>   
0
<tr ng-repeat="res in vm.empDetails track by $index | filter:customFilter"> 

können Sie einen customFilter verwenden, um die Elemente herauszufiltern, deren access_level admin

app.filter('customFilter', function() { 
    return function(items) { 
     var filtered = []; 
     angular.forEach(items, function(item) { 
     if(item.hasOwnProperty("access_level") && !item.access_level === "admin") 
      filtered.push(item); 
     }); 
     return filtered; 
    }; 
}); 
+0

Angular 'filter' kann der Stück verfolgen Eigenschaften und Filter nach dem Wert, den Sie übergeben. Keine Notwendigkeit für benutzerdefinierte Filter. – AranS

+0

@AranS: Sie brauchen nicht ... aber manchmal ist es besser, Ihren eigenen customFilter zu haben, denn es gibt mehr Vorteil beim Spielen mit anderen Geschäftsregeln, die auf dasselbe Objekt angewendet werden ... es ist nur eine Wahl und eine Entscheidung. – Thalaivar

+1

Danke, es ist gut, neue Sichtweisen zu sehen – AranS

0

können Sie verwenden Filter:

<tr ng-repeat="res in vm.empDetails track by $index | filter: {accessLevel: 'worker'})">    
      <td>{{res.firstName}} {{res.lastName}}</td> 
       <td>{{res.jobTitle}}</td> 
       <td><md-button ng-click="vm.manageProfile(res._id)">Manage</md-button></td></tr>