你应该如何在AngularJS中定义常规函数

时间:2014-05-28 07:11:12

标签: javascript angularjs mvw

我在AngularJS方面有一些经验,但事实上我无法弄清楚如何处理AngularJS控制器中的常规函数​​一直困扰着我。为了记录,我说的是一个处理控制器内部小型业务逻辑的功能,不需要跨控制器共享。我找到了两种方法来处理不需要从视图绑定的常规函数​​。

我找到的第一种方法是使用:$scope.myFunction = function(){}但是它可以直接从视图中使用的事实看起来并不正确。

我找到的第二种方法是使用常规的Javascript函数:function myFunction(){}但我不知道AngularJS中这些函数的可见性。

是否有正确的"确保控制器内可见度有限的方法?或者我应该继续使用常规的Javascript函数吗?

1 个答案:

答案 0 :(得分:6)

就像你定义一个" local"一样。标准闭包内的功能:

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

localFunclocalFuncHoisted在大多数情况下是相同的,但每种情况都有其自身的优点。在声明之前和之后,托管函数对所有代码都可见。只有在需要时才能设置localFunc,而在不需要时可以删除{{1}}。