Ответ 1
Я использую для этого следующий метод и отлично работаю для меня.
var app = angular.module("myApp", []);
angular.module("myApp").requires.push('ngResource');
Вы, ребята, знаете, можно ли добавить зависимость модуля после его создания? Что-то вроде этого:
// init module in file A
angular.module("myApp", []);
// retrieve module in file B and add new dependencies:
mod = angular.module("myApp");
// now I want to add an 'ngResource' dependency to mod
// ???
EDIT: Я понимаю, это может показаться странным вопросом. Я работаю над организацией приложений на основе компонентов и хочу также посмотреть, может ли подкомпонент добавить к нему родительский компонентный компонент без определения его собственного модуля. Что-то вроде этого:
app/
components/
|__componentA/
|__app.js // initializes component A module
|__subcomponentA/
|__app.js // want to add subcomponentA dependencies to componentA module from here
Моя альтернатива просто объявляет все зависимости subcomponentA непосредственно от модуля componentA, но с точки зрения организации я бы предпочел сохранить эти зависимости внутри каталога subcomponentA
, поэтому, если позже я решу удалить подкомпонентA из app, мне не нужно забывать удалять его зависимости от модуля componentA. Я хочу, чтобы все, что касается subcomponentA, было сгруппировано внутри каталога subcomponentA
. Моя сборка script гарантирует, что код компонента будет обработан до того, как будет существовать подкомпонент A.
Спасибо всем, кто наносит удар по этому вопросу.
Я использую для этого следующий метод и отлично работаю для меня.
var app = angular.module("myApp", []);
angular.module("myApp").requires.push('ngResource');
Я не думаю, что это возможно. Тем не менее, я хотел бы, чтобы меня доказали неправильно.
Из моего опыта (и в соответствии с Angular documentation) зависимости модуля могут быть объявлены только при инициализации модуля. Стоит отметить, что до тех пор, пока приложение не загрузится, зависимости не будут полностью установлены. Невозможно добавить зависимости к запущенному приложению, насколько я знаю, если нет способа перезагрузить все приложение, которое может иметь нежелательные побочные эффекты.
Изменить: На самом деле.... Я никогда не пробовал этого, но на самом деле это может быть намного проще, чем я думал изначально. Мы могли бы попробовать следующее:
Файл A:
window.myApp_dependencies = []; // Add dependencies to the global scope.
angular.module('myApp', dependencies);
Файл B:
var mod = angular.module("myApp");
window.myApp_dependencies.push('ngRoute');
Это не идеально, поскольку вы вынуждены создавать переменную в глобальной области. Однако было бы возможно сделать это с помощью модулей. Обратите внимание, что в этом случае зависимости будут только изменяться до тех пор, пока приложение не начнет работать, поэтому вы можете разделить зависимости между файлами, но вы не сможете их изменить во время выполнения.
Я не знаю, работает ли это. Я собираюсь попробовать это завтра, однако.
Странный вопрос, но все же то, что вы пытаетесь достичь, является чем-то неправильным в перспективе инъекции angularjs/SPA/зависимости
Ваш пример использования - это то, что вы хотите использовать эту зависимость в определенном модуле или на одной странице. Вот почему вы хотите вводить его в одном положении, а не в другом.
Но это сделало бы две разные области применения для вашего приложения, потому что вы используете одно и то же имя модуля, если вы повторно инициализировали этот модуль, который будет отличаться от того, который уже объявлен
say: файл A
angular.module("myApp", []);
Это определено и в файле B
mod = angular.module("myApp", ['ngResource']);
поэтому это может привести к тому, что в одном приложении будет иметься два разных приложения с одинаковым именем и два приложения с одинаковым именем в разных файлах так что это похоже на то, что внутри приложения есть два разных модуля angular.
Вторая опция: пусть у вас есть один и тот же модуль в приложении и вставляйте его в одну точку и в любом контроллере, который вы хотите использовать, чтобы это в качестве аргумента в этом контроллере.
Надеюсь на эту помощь!