Могу ли я сделать функцию доступной в каждом controllerе в угловом?

Если у меня есть функция утилиты foo которую я хочу иметь возможность звонить из любой точки моего объявления ng-app . Есть ли какая-нибудь возможность сделать ее доступной по всему миру в моей настройке модуля или мне нужно добавить ее в область на каждом controllerе?

В основном у вас есть два варианта: определить его как службу или поместить в корневую область. Я бы посоветовал вам избавиться от него, чтобы избежать загрязнения корневой области. Вы создаете сервис и делаете его доступным в своем controllerе следующим образом:

            

Если это не вариант для вас, вы можете добавить его в корневую область следующим образом:

            

Таким образом, все ваши шаблоны могут вызывать globalFoo() не передавая его шаблону с controllerа.

Вы также можете комбинировать их, я думаю:

            

Хотя первый подход рассматривается как «подход, подобный угловому», я чувствую, что это добавляет накладные расходы.

Подумайте, хочу ли я использовать эту функцию myservice.foo в 10 разных controllerах. Мне нужно будет указать эту зависимость «myService», а затем свойство scope scope scope.callFoo во всех десяти из них. Это просто повторение и как-то нарушает принцип СУХОЙ.

Принимая во внимание, что если я использую подход $ rootScope, я определяю эту глобальную функцию gobalFoo только один раз, и он будет доступен во всех моих будущих controllerах, независимо от того, сколько.

У AngularJs есть « Услуги » и « Фабрики » только для таких проблем, как ваши. Они используются для того, чтобы иметь что-то глобальное между Контроллерами, Директивами, другими службами или любыми другими компонентами angularjs. Вы можете определять функции, хранить данные, выполнять вычисления или что угодно хотите внутри Сервисы и использовать их в компонентах AngularJs как Global .like

 angular.module('MyModule', [...]) .service('MyService', ['$http', function($http){ return { users: [...], getUserFriends: function(userId){ return $http({ method: 'GET', url: '/api/user/friends/' + userId }); } .... } }]) 

если вам нужно больше

Узнайте больше о том, почему нам нужны услуги и заводы AngularJs

Я немного новичок в Angular, но то, что мне было полезно сделать (и довольно просто), я сделал глобальный скрипт, который я загружаю на свою страницу перед локальным скриптом с глобальными переменными, которые мне нужны для доступа на всех страницах. В этом скрипте я создал объект, называемый «globalFunctions», и добавил функции, которые мне нужны для глобального доступа в качестве свойств. например globalFunctions.foo = myFunc(); , Затем в каждом локальном скрипте я написал $scope.globalFunctions = globalFunctions; и у меня сразу есть доступ к любой функции, которую я добавил в объект globalFunctions в глобальном скрипте.

Это немного обходное решение, и я не уверен, что это поможет вам, но это определенно помогло мне, так как у меня было много функций, и это была боль, добавляющая все их на каждую страницу.

  • Передача функций в качестве аргументов в Matlab
  • Как сделать .lib-файл, когда есть .dll-файл и заголовочный файл
  • Функция триггера jquery, когда элемент находится в viewport
  • Как подсчитать текст другого шрифта в excel
  • Как построить несколько функций на одной фигуре в Matplotlib?
  • Разница между виртуальной функцией и чистой виртуальной функцией
  • Функция с тем же именем, но другая подпись в производном classе
  • как тестировать облачные функции для Firebase локально на ПК
  • Как ключевые слова IMMUTABLE, STABLE и VOLATILE влияют на поведение функции?
  • Вызвать функцию, названную в строковой переменной в C
  • Почему std :: function не равнозначно сопоставимо?
  • Interesting Posts

    C ++ 11 Regex Matching

    Как вставить дату в таблицу Excel?

    Как поддерживать HTTP OPTIONS-глагол в приложении ASP.NET MVC / WebAPI

    Используете ли вы фигурные скобки для дополнительной проверки?

    Клавиша уменьшения громкости OSX Remap

    У меня установлено 4 ГБ ОЗУ, но только 2 ГБ используются?

    С чего начать openGL ES создать и повернуть куб в iPhone?

    В PowerPoint существует ли способ создания печатной версии анимированного слайда?

    В Windows 8 параметры моего прокси-сервера активируются автоматически, как отключить это?

    Что делает крипт (3) и еще что означает

    LocalDB SQL Server 2014 Express создает 2 экземпляра (localdb) \ ProjectsV12 & (localdb) \ MSSQLLocalDB?

    Как использовать свободные свойства jqgrid для условного добавления кнопок действий

    Как я могу поддерживать порядок ключей, которые я добавляю к hashу Perl?

    Pinging машина в моей локальной сети получает «недостижимый» ответ от моего собственного IP-адреса?

    cURL и HttpURLConnection – Опубликовать данные JSON

    Давайте будем гением компьютера.