你几乎可以使用过滤功能,但我认为在你的情况下
你真正需要的是一个自定义过滤器
。它们实际上很难写。
过滤器只是注册到
.filter()
帮手
你只需要一个包含你关心的参数的
.
//Outer factory function
function SuffixFilter(){
//Inner function which is our filter
return function(items, ignoredItem){
var filteredItems = [];
angular.forEach(items, function(item){
//Your filtering logic may be more complex
// than this. It's only an example
if(item == someCriteria || item == ignoredItem){
filteredItems.push(item);
}
});
return filteredItems;
}
}
angular.module('myModule')
.filter('suffixFilter', SuffixFilter);
一旦你注册了后缀过滤器,
您只需在标记中使用您关心的参数调用它
。其余部分由Angular控制。
<!-- Pass in the current selection to ignore -->
suffixes | suffixFilter:label.suffix
更新-
基于以下评论
:
函数参数并不是这样工作的。它期望计算为可调用的函数。
从技术上讲
您可以返回一个函数并使用闭包来完成所需的操作。类似于:
<!-- In your markup -->
filter:suffixFilter(label.suffix)
//In your controller
$scope.suffixFilter = function (selectedValue) {
//this is your actual filter here
return function(item){
//You have access to 'selectedValue' via
// a closure
return item == someCriteria || item === selectedValue;
}
}
因此,尽管这当然是可能的,但我认为自定义过滤器在语义上更清晰。