我正在使用 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>