我们什么时候需要将一个方法绑定到控制器中的$ scope,我正在处理只是在对象上映射操作的方法。
Example :
$scope.myVar = {};
function myMyObject(x) {
$scope.myVar = {
"xKey":x
}
}
to
$scope.myMyObject = function(x) {
$scope.myVar = {
"xKey":x
}
}
myMyObject(10);
$scope.myMyObject(10);
Is it necessary to bind $scope to myMyObject method here ?
答案 0 :(得分:1)
仅在需要从View中调用方法时才将方法绑定到$scope
。如果它们只是您只能从控制器本身调用的私有方法,则不需要污染范围。
在您的特定方案中,无需将myMyoObject()
绑定到范围。
编辑:您可以完全避免使用$ scope并使用controllerAs语法,在这种情况下,您可以绑定到$ scope。非公共职能仍然不受任何限制。
答案 1 :(得分:1)
只能在HTML /视图中访问$ scope对象上定义的方法。来自ng-click,过滤器等的示例 - 如果不需要从html访问您的方法,则无需将其绑定到$ scope。
答案 2 :(得分:1)
作为一种好的做法,您可以在控制器中声明所有函数,然后仅将$ scope绑定到您需要的函数。
示例:
function _myHelperFunction(param) {
//do some stuff
}
function myFunction(otherParam) {
//do some stuff or use the _myHelperFunction
}
function myFunction2(otherParam) {
//do some stuff or use the _myHelperFunction
}
function myFunction3(otherParam) {
//do some stuff or use the _myHelperFunction
}
$scope.myFunction = myFunction
$scope.myFunction2 = myFunction2
$scope.myFunction3 = myFunction3
甚至更好的ES6解构
[$scope.myFunction, $scope.myFunction2, $scope.myFunction3] =
[myFunction, myFunction2, myFunction3]
或者:
angular.extend($scope, {
myFunction,
myFunction2,
myFunction3
})
答案 3 :(得分:0)
在控制器本身保持独立功能。
将所有函数添加到$ scope将长期影响应用程序性能,并影响具有大型函数的复杂应用程序
只有当你想在html(view / partial)或child $ scopes中访问它时才在$ scope中写函数在父$ scope中编写的函数可供子范围$ scopes
访问