【问题标题】:AngularJS - Use function as filter inside controllerAngularJS - 使用函数作为控制器内的过滤器
【发布时间】:2019-02-19 17:11:32
【问题描述】:

如果我定义了过滤器

app.filter('filterName', function() {
    return function(var) {
        // Some filter stuff
    }
}

我可以在控制器上调用它$filter('filterName')($scope.someObj);

但是,这是我的问题,如果我有一个用作过滤器的函数

$scope.myFilterFunction = function() {
    return true;
}

在我的 HTML 中

<p ng-repeat="item in items | filter:myFilterFunction">{{item}}</p>

如何在控制器中使用这个函数过滤器(我用 $filter 测试过但抛出错误)。

提前致谢。

【问题讨论】:

    标签: angularjs angularjs-filter


    【解决方案1】:

    如果您已经实现了自定义过滤器filterName,为什么不使用它?

    试试

    <p ng-repeat="item in items | filterName">{{item}}</p>
    

    更新

    你只是缺少括号。

    <p ng-repeat="item in items | filter:myFilterFunction()">{{item}}</p>
    

    【讨论】:

    • 我的问题是如何使用控制器内部的过滤功能。
    • 没有办法做到这一点,如果你想使用 $scope.myFilterFunction 作为 HTML 中的过滤器作为管道,你需要像 filterName 一样实现它。
    • 嗯,这是一个答案。然后我必须实现一个自定义过滤器而不是一个函数。好的,非常感谢。
    • 对不起,它可以在控制器中使用,如您所述。您只是缺少括号,更新了答案。
    • 伙计,您正在视图中使用过滤器,HTML。我说的是在控制器代码中使用它(例如,获取一个数组并在函数中应用过滤器)
    【解决方案2】:

    在控制器中注入 $filter 并将其与您的过滤器名称一起使用。

    controller.$inject = ['$filter'];
    
    function controller($filter){
    // code here    
      $filter('filterName')(arg1,arg2);
    //
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-02
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      相关资源
      最近更新 更多