Как вы должны определить обычные функции в AngularJS
У меня есть некоторый опыт работы с AngularJS, но тот факт, что я не могу понять, как обрабатывать обычные функции внутри контроллера AngularJS, продолжает беспокоить меня. Для справки, я говорю о функции, которая обрабатывает части малой бизнес-логики внутри контроллера, которые не должны быть разделены между контроллерами. Я нашел два способа обработки таких обычных функций, которые не нуждаются в связывании с представлением.
Первый способ, который я нашел, это просто использовать: $scope.myFunction = function(){}
но тот факт, что его можно использовать непосредственно с точки зрения, кажется неправильным.
Второй способ, который я нашел, это просто использовать обычную функцию Javascript: function myFunction(){}
но я не знаю, как видимость таких функций в AngularJS.
Есть ли "правильный" способ обеспечения ограниченной видимости внутри контроллера? Или я должен продолжать использовать обычную функцию Javascript?
1 ответ
Точно так же, как вы определяете "локальную" функцию в стандартном замыкании:
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
может быть установлен только при необходимости и удален, когда нет.