如何在过滤器特定场中使用angularjs过滤器

时间:2016-11-16 02:41:22

标签: javascript angularjs angularjs-filter

控制器

    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

我必须列出其访问级别为&#34; Supervisor&#34;

谢谢,

3 个答案:

答案 0 :(得分:0)

您可以直接在ng-repeat中按访问级别进行过滤。

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

看一下这个答案:How to filter by object property in angularJS

答案 1 :(得分:0)

您可以使用现有的过滤器选项

来执行此操作
.parent{
    display: flex;
}
.child{
    flex:1;
}

<强> DEMO

答案 2 :(得分:0)

由于您将整个数据存储在用户对象范围内,因此您可以访问用户名和访问级别属性。

在这种情况下,我没有理由创建自定义过滤器,因为这可以通过Angular的智能过滤器表达式来处理。

如果您阅读了角度api,则过滤器可以在HTML模板绑定中使用。

HTML模板绑定中的过滤器应该是expression,propertyKey或comparator。在您的情况下,您需要将过滤器注入

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

或者

你可以使用这样非常简单的东西。

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