如何在$ filter中使用控制器$ scope定义的函数

时间:2016-02-24 04:10:57

标签: angularjs angular-filters

请不要将此误认为是如何在带有注入滤波器的控制器中使用$ 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有一个非工作的例子。

1 个答案:

答案 0 :(得分:2)

我不知道为什么你的过滤函数中有这个闭包。

如果你删除它并添加一个参数,那么你的过滤器看起来如下,它可以工作:

$scope.myFilter = function(val){
    return typeof val.id === 'number' 
};

这是一个更新的小提琴:http://jsfiddle.net/doc6c713/