我在AngularJS方面有一些经验,但事实上我无法弄清楚如何处理AngularJS控制器中的常规函数一直困扰着我。为了记录,我说的是一个处理控制器内部小型业务逻辑的功能,不需要跨控制器共享。我找到了两种方法来处理不需要从视图绑定的常规函数。
我找到的第一种方法是使用:$scope.myFunction = function(){}
但是它可以直接从视图中使用的事实看起来并不正确。
我找到的第二种方法是使用常规的Javascript函数:function myFunction(){}
但我不知道AngularJS中这些函数的可见性。
是否有正确的"确保控制器内可见度有限的方法?或者我应该继续使用常规的Javascript函数吗?
答案 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
}
}]);
localFunc
和localFuncHoisted
在大多数情况下是相同的,但每种情况都有其自身的优点。在声明之前和之后,托管函数对所有代码都可见。只有在需要时才能设置localFunc
,而在不需要时可以删除{{1}}。