2016-06-29 8 views
0

私は自分の関数をコントローラの外に定義します。私は関数の1つで$ 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

$filterため依存性注入のコントローラ内部作品(もしコントローラを宣言したとき、あなたはまた、$scope$filterとしての依存関係を、指定された)のdoSomething関数一方ではない。

私の質問は次のようになります。

1)なぜコントローラ外doSomethingを宣言しますか?それは再利用のためですか?

2)doSomethingはどこに電話しますか?

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); 

} 
をお試しください
関連する問題