我是角色的新手并拥有以下代码:
<select ng-model="f.value" ng-options="item.value as item.label for item in f.options | filter: myProcessFilter" />
我可以使用类似的东西轻松过滤选项
$scope.myProcessFilter = function (v, i) {
console.log(v);
// do some filtering and return
}
但是,现在我想将一个变量传递给processFilter。像这样
<select ng-model="f.value" ng-options="item.value as item.label for item in f.options | filter: myProcessFilter('some value')" />
但是当我这样做时,(v,i)不再自动通过。所以我想手动传递它。但是,我不知道如何从ng-options指令中访问iterable。我试过了:
<select ng-model="f.value" ng-options="item.value as item.label for item in f.options | filter: myProcessFilter(item)" />
和
<select ng-model="f.value" ng-options="item.value as item.label for item in f.options | filter: myProcessFilter(this)" />
但是都不行。我在谷歌搜索正确的东西时遇到了麻烦,我确信这很简单!任何帮助将不胜感激。
答案 0 :(得分:0)
请注意,在代码的第一个版本中,您使用的是… | filter: myProcessFilter
,没有括号。您传递给filter
filter的是一个函数,不是此函数返回的内容。
应始终如此:filter
filter 需要一个功能。如果由于某些原因,它还需要一个额外的变量来工作,你应该使用一个中间函数来完成这项工作:
<select ng-model="f.value" ng-options="… | filter: createMyProcessFilter('Some value')" />
function createMyProcessFilter(additionalValue)
{
return function myProcessFilter(v, i) {
// You can now use v, i AND additionalValue here!
};
}