angularjs ng-repeat ng-options自定义过滤器

时间:2018-06-12 12:14:27

标签: angularjs angularjs-ng-repeat ng-options ng-filter

.filter('statusFilter', function() {

        return function(listings) {
        var filtered = [];
        var arr = [];

        angular.forEach(listings, function(listing) {
            if(listing.status != 0){
            filtered.push(listing);
            }
        });
        return filtered;
        };
    })

上面的过滤器工作正常,以便在ng-repeat表的每一行的下拉列表中从选择中删除状态为零的条目。

然而,我的老板已经说过,如果他们是当前的默认选择,他需要保留零状态的条目。使用上面的过滤器,对于状态为零的条目,默认选择为空。

这是ng-repeat:

ng-repeat="task in tasksCtrl.tasks"

以下是包含ng-options的ng-repeat表格单元格:

<td level="{{tasksCtrl.level}}" check-permissions="onlyAdmin">
                            <select name="selValidator-{{ task.id }}"
                                    class="full-width select-width-tasks"
                                    ng-options="item.id_user as item.name for item in tasksCtrl.validators | statusFilter" 
                                    ng-model="task.validator_id" 
                            </select>
                        </td>

我还需要添加list.status为零的过滤器列表,但是list.id_user等于task.validator_id

我相信我需要添加task.validator_id作为参数来传递函数。我虽然在挣扎!

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

<强>解

.filter('statusFilter', function() {

        return function(listings, id) {
        var filtered = [];
        angular.forEach(listings, function(listing) {
            //console.log([id, listing.id_user, listing.name, id == listing.id_user]);
            if(listing.status != 0 || id == listing.id_user){
            filtered.push(listing);
            }
        });
        return filtered;
        };
    })

NG-选项:

ng-options="item.id_user as item.name for item in tasksCtrl.validators | statusFilter:task.validator_id"
相关问题