Как вы должны определить обычные функции в 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 может быть установлен только при необходимости и удален, когда нет.

Другие вопросы по тегам