Подтвердить что ты не робот

Где поставить пользовательские функции в Angular JS?

На мой взгляд, я хочу сделать:

<p>
  {{ say() }}
</p>

Где say определяется как таковое:

say = function() {
  return "Hello World";
}

Я могу определить его в моем контроллере:

function TestCtrl($scope) {
  $scope.say = function() { ... };
}

Но тогда он доступен только внутри этого контроллера.

Если я определяю функцию вне файловой структуры Angular, она ничего не отображает. То же самое, если я определяю его в моем файле controllers.js, но вне области функций контроллера.

Где подходящее место для установки моей функции, поэтому я могу отобразить ее на любом контроллере?

4b9b3361

Ответ 1

Один из способов - создать службу с функциями, которые вы хотите разделить на несколько контроллеров. См. этот пост для получения дополнительной информации.

После этого вы можете ввести службу, созданную в какой-либо контроллер, и получить доступ к функции say() с кодом примерно так:

function TestCtrl($scope, myService){
   $scope.say = myService.say;
}

Где вы определили myService как:

angular.module('myApp', [])
    .factory('myService', function () {
        return {
            say: function () {
                return "Hello World";
            }
        }
    });

Ниже приведен пример jsFiddle.