3

我在 AngularJS 方面有一些经验,但我不知道如何处理 AngularJS 控制器中的常规函数​​这一事实一直困扰着我。为了记录,我正在谈论一个处理控制器内部部分小型业务逻辑的函数,不需要在控制器之间共享。我找到了两种方法来处理不需要从视图绑定的常规函数​​。

我发现的第一种方法就是使用:$scope.myFunction = function(){}但是可以直接从视图中使用它的事实似乎不正确。

我发现的第二种方法是只使用常规的 Javascript 函数:function myFunction(){}但我不知道此类函数在 AngularJS 中的可见性如何。

是否有“正确”的方法来确保控制器内部的可见性有限?还是我应该继续使用常规的 Javascript 函数?

4

1 回答 1

7

就像在标准闭包中定义“本地”函数一样:

myApp.controller("MyCtrl", ["$scope", function($scope) {
    var localFunc = function() {
        // Internal function, only available to code executed after
        // localFunc is declared
    };
    function localFuncHoisted() {
        // Internal function, doesn't matter where it is declared
        // will be visible to all internal methods
    }
    $scope.globalFunc = function() {
        // Available from the controller
    }
}]);

localFunc并且localFuncHoisted在大多数情况下是相同的,但是每个都有自己的好处。在声明之前和之后,托管函数对所有代码都是可见的。localFunc只能在需要时设置,不需要时删除。

于 2014-05-28T07:21:21.777 回答