请不要将此误认为是如何在带有注入滤波器的控制器中使用$ filter的典型问题。我的问题有一个细微的差别,即使用定义为$ scope属性的非注入过滤器。例如,如果您有此控制器:
function MyCtrl($scope, $filter)
{
$scope.itemsSource = [
{id:1, name:'John'},
{id:2, name:'Steve'},
{id:'3', name:'Joey'},
{id:4, name:'Mary'},
{id:5, name:'Marylin'}];
$scope.myFilter = function(){
return function(val){
return typeof val.id === 'number'
}
};
$scope.items = $filter('filter')($scope.itemsSource, $scope.myFilter);
};
我需要在$ filter调用中使用$ scope.myFilter函数更改过滤itemsSource?
Here is a fiddle有一个非工作的例子。
答案 0 :(得分:2)
我不知道为什么你的过滤函数中有这个闭包。
如果你删除它并添加一个参数,那么你的过滤器看起来如下,它可以工作:
$scope.myFilter = function(val){
return typeof val.id === 'number'
};
这是一个更新的小提琴:http://jsfiddle.net/doc6c713/