Можно ли использовать директивы родительского модуля в дочерних модулях, таких как контроллеры?

Так же, как controllers являются независимыми от модуля «уровня» и могут использоваться в любом месте во всем стеке приложений, мне интересно, есть ли способ для дочернего модуля использовать директивы родительских модулей без необходимости назначать их в качестве зависимости для каждого дочернего модуля.

Пример того, как я надеялся, что директивы будут работать (с точки зрения controller):

angular.module('app.child').config(function($stateProvider) {
  $stateProvider.state('child', {
    url: '/child',
    views: {
      'header': {
        controller: 'parentController',
        templateUrl: 'child.html'
      }
    }
  });
});

angular.module('app').controller('parentController', function () {
  console.log('test');
});

Так что мне интересно, если

angular.module('app', ['app.child']);
angular.module('app.child', ['ui.router']);

также можно записать как

angular.module('app', ['app.child', 'ui.router']);
angular.module('app.child', []);

каким-то образом, где ui.router все еще доступен для дочернего модуля.

Если я сделаю это в своем существующем проекте, я получу $injector ошибок.


person Gjert    schedule 27.04.2017    source источник


Ответы (1)


Точно так же, как контроллеры не зависят от «уровня» модуля и могут использоваться где угодно.

Это правда, и это то, чего вы никогда не должны делать. Модуль должен быть самосогласованным и независимым от родительских модулей — он должен объявлять все необходимые зависимости.

т.е. если у вас 2 модуля: app и app.child, и в каком-то месте в app.child у вас есть: <div ui-sref=... то ваш app.child должен зависеть от ui-router. (Это все равно будет работать, если это не так, но родитель работает, но это не значит, что это правильный способ)

Н.Б. Многие приложения могут быть оставлены в одном модуле. Вы уверены, что вам нужно больше одного?

person Petr Averyanov    schedule 27.04.2017
comment
Я только что слышал, что использование нескольких модулей является хорошей практикой при создании приложений, поэтому я хотел сделать хорошую базовую структуру. Однако сильно ли это замедляет работу моего приложения, если у меня есть, скажем, 5 дочерних модулей, и каждый из них использует, скажем, ui-router в качестве зависимости? Или я должен как-то сгруппировать их вместе? - person Gjert; 27.04.2017
comment
нет, это не замедляет, у вас может быть одна и та же зависимость несколько раз - это нормально. Использование нескольких модулей - так же, как и несколько проектов в Maven/JAVA, они могут быть у вас, а могут и не быть. Это больше касается организации кода, пока вы не поделитесь своим кодом между несколькими приложениями/пользователями. (например, нпм/бауэр) - person Petr Averyanov; 27.04.2017
comment
Большой! Спасибо за помощь, обязательно запомню :) - person Gjert; 27.04.2017