在AngularJS控制器中创建私有方法

时间:2014-12-04 16:35:07

标签: angularjs

在AngularJS控制器中创建私有方法的方法是什么?

我目前这样做了,但我想知道这是否是正确/可取的方式:

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

    ...

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

        anotherPrivateFunction();

        ...
    };

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

        myPrivateFunction();

        ...
    };

    ...

    function myPrivateFunction(){
        //
    }

    function anotherPrivateFunction(){
        //
    }

});

2 个答案:

答案 0 :(得分:4)

这是对的。您的函数只能在控制器构造函数的范围内可见。对于工厂和vanilla js来说,这是相同的,其中在函数中声明的函数只能在其父函数上下文中可见。

答案 1 :(得分:1)

在工厂中它看起来如下:

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

      function privareMethodA() {

      }

      var anotherPrivateMethod = function() {

      }

     return {
       publicMethodA = function() {

       },

       publicMethodB = function() {

       }

   };

});

因此,在您将工厂注入另一个工厂或控制器publicMethodA()并且publicMethodB()可用后,但privateMethodA()anotherPrivatemethod()无法访问在这家工厂外面。 控制器的可访问性与您的代码段类似。