2014-12-04 28 views
2

在AngularJS控制器中創建私有方法的方式是什麼?在AngularJS控制器中創建私有方法

我已經做了目前像這樣,但我不知道它是否是正確的/可取的方法:

app.controller('MyController', function($scope){ 
    myPrivateFunction(); 
    anotherPrivateFunction(); 

    ... 

    $scope.someScopeMethod = function(){ 
     ... 

     anotherPrivateFunction(); 

     ... 
    }; 

    $scope.anotherScopeMethod = function(){ 
     ... 

     myPrivateFunction(); 

     ... 
    }; 

    ... 

    function myPrivateFunction(){ 
     // 
    } 

    function anotherPrivateFunction(){ 
     // 
    } 

}); 
+0

那麼,你的意思是AngularJS控制器?你說AngularJS工廠......是的,你應該這樣做。 – 2014-12-04 16:36:53

+0

@NewDev:哎呀,我的意思是詢問他們兩個 - 現在問題已經更新。 無論如何,工廠應該不同嗎? – budhajeewa 2014-12-04 16:40:27

+0

這是一個類似的想法。在一天結束時,它只是一個JavaScript對象/函數。 – 2014-12-04 16:45:06

回答

3

這是正確的。你的函數只能在你的控制器構造函數的作用域內可見。對於在函數中聲明的函數只會在其父函數上下文中可見的工廠和香草js,這是一樣的。

+0

非常感謝答案! :) – budhajeewa 2014-12-05 16:16:12

1

在工廠中,將看起來像如下:

.factory('my-factory', function(){ 

     function privareMethodA() { 

     } 

     var anotherPrivateMethod = function() { 

     } 

    return { 
     publicMethodA = function() { 

     }, 

     publicMethodB = function() { 

     } 

    }; 

}); 

所以你注入你的工廠到另一個工廠或控制器publicMethodA()publicMethodB()之後都可,但privateMethodA()anotherPrivatemethod()將無法​​從外部訪問這家工廠。 控制器的可訪問性與您的代碼段類似。

+0

非常感謝Isuru的回答。 :) – budhajeewa 2014-12-05 16:15:50

相關問題