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



请不要误认为这是关于如何在带有注入过滤器的控制器中使用$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);
};
我需要在使用

$scope.myFilter 函数过滤项目来源的$filter调用中更改什么?

这是一个非工作示例的小提琴。

我不知道

为什么你的过滤器函数中有这种闭包。

如果将其删除并添加参数,则筛选器如下所示,则它可以工作:

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

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

最新更新