$ filter不在控制器外部的函数中工作

时间:2016-06-29 04:22:21

标签: angularjs

我在控制器外定义我的功能。我想在其中一个函数中使用$ filter。您可以看到它在控制器内部工作($ scope.test1有效),但它在doSomething中找不到$ filter函数。请帮我搞清楚。如果我在控制器内部移动doSomething它将起作用,但我不想这样做。

Plunkr



    angular.module('myapp',[])
    
        .controller('appController',['$scope','$filter',function($scope,$filter) {
    
        $scope.doSomething = doSomething;
    
        //WORKS
        $scope.test1 = $filter('filter')([{typeid:1},{typeid:2}], { typeid: 2 }, true);
        
        
        }]);
    
    
    function doSomething($filter) {
    
      //DOES NOT WORK  
      test2 = $filter('filter')([{typeid:1},{typeid:2}], { typeid: 1 }, true);
      alert(test2);
      
    }




2 个答案:

答案 0 :(得分:2)

由于依赖注入(当你声明控制器时,你还指定了它的依赖关系,例如$filter$scope),

$filter在控制器内部工作,而doSomething函数却没有。

我的问题是:

1)为什么在控制器外声明doSomething?它是否可以重复使用?

2)您打算在哪里致电doSomething

答案 1 :(得分:0)

试试这个

Plunkr

angular.module('myapp',[])

    .controller('appController',['$scope','$filter',function($scope,$filter) {

    $scope.doSomething = function() {
      doSomething($scope, $filter);
    };

    }]);


function doSomething($scope,$filter) {

  $scope.name = 'hello world';

  $scope.result = $filter('filter')([{typeid:1},{typeid:2}], { typeid: 1 }, true);
  alert($scope.result);

}