Когда нам нужно привязать метод к $ 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 ?
Привяжите методы к $scope
только тогда, когда их нужно будет вызывать из представления. Если это только частные методы, которые вы вызываете только из самого контроллера, нет необходимости загрязнять область действия.
В вашем конкретном сценарии нет необходимости связывать myMyoObject()
с областью действия.
Изменить: вы можете вообще не использовать $ scope и использовать синтаксис controllerAs, и в этом случае вместо привязки к $ scope вы привязываетесь к этому. Негосударственные функции по-прежнему будут не привязаны ни к чему.
this
и это будет видно и в представлениях.
В качестве хорошей практики вы можете объявить все свои функции в своем контроллере, а затем привязать к области $ только те функции, которые вам нужны.
Пример:
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
})
Только методы, определенные на объекте $ scope, доступны из HTML/view. Пример из ng-click, фильтров и т.д. -If ваш метод не требуется для доступа из html, тогда нет необходимости связывать его с $ scope.
Сохраняйте независимую функцию в самом контроллере.
Добавление всех функций в область $ будет влиять на производительность приложения в долгосрочной перспективе и в сложных приложениях с большими функциями
write в $ scope, только если вы хотите получить к нему доступ в html (view/partial) или в дочерних $ scopes
функция, написанная в родительском $ scope, доступна для дочерних $ scopes
this
и использовать синтаксисcontrollerAs
в представлении - docs.angularjs.org/api/ng/directive/ngController#example