2013-08-19 4 views
1

В AngularJS существует небольшая форма для создания контроллеров, поэтому вам не нужно использовать модуль для этого. Эта короткая форма просто определить функциюВозможно ли создать услугу AngularJS без модуля?

function FooController ($scope) { 
    // ... 
} 

и ссылаться на него из HTML-разметки с использованием ng-controller:

<div ng-controller="FooController"> 
    ... 
</div> 

Теперь мой вопрос, есть ли подобная «короткая форма», чтобы определить Сервисы? Другими словами: Можете ли вы определить (и использовать) службу без использования модуля?

Обратите внимание, что я знаю, что имеет смысл структурировать ваши приложения с использованием модулей, и не делать этого может/должно рассматриваться как плохая практика. Просто я объясняю AngularJS тем, кто совершенно не знаком с этим, и вопрос возник сегодня. Так что это просто любопытство и полнота.

+3

Цитата из документа 'Чтобы зарегистрировать услугу, у вас должен быть модуль, в котором эта служба будет частью .', поэтому я думаю, что ответ отрицательный. – zsong

+0

Если вы включите это в ответ и укажите ссылку, я соглашусь с ней. –

ответ

7

Цитируется doc of Creating Services

Чтобы зарегистрировать услугу, вы обязательно есть модуль, что эта услуга будет быть частью.

Таким образом, я думаю, что ответ отрицательный.

+0

Неверный формат. Смотри ниже. вам не нужен модуль, потому что вы можете использовать модуль «ng». –

4

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

angular.module('ng') 
    .service('aService', function() { 
    // you really shouldn't do this 
    }); 

Это работает, но вы не должны возиться с модулем, который вы не владеете ,

Если вы пытаетесь объяснить кому-то, почему, используя свои собственные модули с .controller хорошо:

  • Поговорите с ними о тестировании. Это намного легче высмеивать вещи, если вы используете модули
  • Если вам необходимо иметь другие модули в зависимости (как angular-ui)
  • Если вы хотите украсить другую услугу (например, $http)
  • Если вам нужно зарегистрировать директивы, фильтры, анимации и т.д.
  • это намного приятнее иметь модульный код :)
+0

Это должен быть принятый ответ. –

1

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

Вот что я делаю: вы можете объявить angularjs применение в качестве глобального объекта:

window.markrApplication = angular.module('markrOptionsApp', ....) 

И декларировать все свои услуги, как это:

markrApplication.service('data', .... 

Конечно, нужно, чтобы все зависимостей, установленных во всех ваших приложениях с угловыми углами.

Смежные вопросы