如何在 ng-repeat Angular JS 中添加两个带有 or 条件的过滤器



我正在使用 ng-repeate,在我的过滤器中,我需要使用上限列表中的一个字段,该字段不能被内部选择过滤器引用,所以我需要在 html 块中设置过滤器,而不是在 js 文件 .somthing 中设置过滤器,如下所示:

<div ng-repeat="groupfield in gCtrl.groupingFields">  
        <select ng-options="c.id as c.title for c in gCtrl.columnList | filter : {available:true } || {id:groupfield.fieldName}">  
</select></div>

您可以向筛选器传递自定义函数。您不能将参数传递给实际的过滤器函数,因此诀窍是创建一个返回过滤器函数的函数,并将groupfield传递给该函数。

function MyController() {
    this.customFilter = customFilter;
    function customFilter(groupfield) {
        return function(value, index, array) {
            return value.available || groupfield.fieldName === value.id;
        }
    }
}
<div ng-repeat="groupfield in gCtrl.groupingFields">  
    <select required class="form-control" ng-model="groupfield.fieldName" ng-options="c.id as c.title for c in gCtrl.columnList | filter : groupCtrl.customFilter(groupfield)"></select>
</div>

最新更新