2016-11-16 2 views
-2

-Controllerwie AngularJS Filter in Filter verwenden, insbesondere Feild

app.controller('viewUsersController', function($scope, $http, $cookieStore, $modal) { 
     $scope.cardsDisplayModeEnabled = true; 
     $http.get('http://localhost:8080/myapp/user/all?access_token=' + $cookieStore.get("access_token")). 
     then(function(response) { 
      $scope.users = response.data; 
     }); 

    $scope.filterStarWith = function(level) { 
     var re = new RegExp('^' + "Supervisor", "i"); 
     return level.tfAccessLevel.match(re); 
    }; 
}) 

HTML

<select ng-controller="viewUsersController" ng-model="user.tfSupervisor.id" name="createSupervisor" id="createSupervisor" class="form-control"> 
    <option ng-repeat="level in users | filter:filterStarWith()">{{level.userFirstName}}</option> 
</select> 


Table : user 
Id   username   accesslevel   
1   John    Admin 
2   Mark    Supervisor 
3   Chady    Admin 

ich in Option, deren Zugriffsebene zur Liste haben, ist "Supervisor"

Dank ,

+0

Es gibt hier kein spezifisches Fragedetail oder eine kurze Problembeschreibung. Nachdem Sie [ask] gelesen haben, aktualisieren Sie den Frageninhalt mit allen relevanten Details. – charlietfl

Antwort

0

Sie können nach Zugriffsebene direkt innerhalb Ihrer ng-Wiederholung filtern.

ng-repeat="level in users | filter:{tfAccessLevel:'Supervisor'}" 

Werfen Sie einen Blick auf diese Antwort: How to filter by object property in angularJS

0

Sie können dies einfach tun, indem bestehende Filteroption

<select ng-model="user.id" name="createSupervisor" id="createSupervisor" class="form-control"> 
    <option ng-repeat="level in users | filter: { accesslevel: 'Admin' }">{{level.userFirstName}}</option> 
    </select> 

DEMO

0

Da Sie den gesamten Daten speichern In Ihrem Benutzerobjektbereich haben Sie Zugriff auf die Eigenschaften Benutzername und Zugriffsebene.

In diesem Szenario sehe ich keinen Grund, einen benutzerdefinierten Filter zu erstellen, da dies von Angulars intelligentem Filterausdruck gehandhabt werden kann.

Wenn Sie die angulare API lesen, kann der Filter in HTML-Template-Bindung verwendet werden.

Ein Filter in der HTML-Vorlagenbindung sollte Ausdruck, propertyKey oder Komparator sein. In Ihrem Fall müssen Sie nur Ihre Filter als

<option ng-repeat="level in users | filter:filterStarWith "{{level.userFirstName}}</option> 

injizieren oder sonst

Sie so etwas wie diese verwenden können, das ist ziemlich einfach.

<option ng-repeat="level in users | filter: {accesslevel: 'Supervisor' }"> {{level.userFirstName}}</option>