@stanlee

Как динамически загружать контроллеры в AngularJS?

Приложение имеет структуру
/app
---/modules
------/moduleName
---------/controllers
------------/controllerName.js

Подскажите как лучше динамически загружать контроллеры в зависимости от маршрута?

пробовал так

$routeProvider
	.when('/:module/:controller/:action', {
		templateUrl: function(r) { return modulesPath + '/' + r.module + '/views/' + r.controller + '.html'; },
		controller: DynamicController
	})
;

function DynamicController()
{
	...
	return '/app/modules/moduleName/controllers/controllerName.js';
}


не получается
  • Вопрос задан
  • 2959 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Насколько я понял вы хотите определять один жирный раут, который будет разруливать ситуацию для всех контроллеров. Это в корне не верный подход. Таким образом вы теряете констроль над приложением. В система раутинга angularjs есть довольно мощная штука как resolve-вы, которые так или иначе будут нормально работать только для отдельных раутов.

Но все же если руки чешутся, нужно копать в сторону того, как контроллеры подгружаются по имени и переписывать логику инициализации (там контроллер просто берется как сервис из контейнера насколько я помню) внутри самого ngRoute.
Ответ написан
Комментировать
icelaba
@icelaba
Знаю и умею всё
Вот статья с примерами на эту тему:
weblogs.asp.net/dwahlin/dynamically-loading-contro...
Правда рекомендую несколько раз подумать надо ли вам это на самом деле. Я на ангуляре написал невероятный объем кода и еще ни разу мне не был нужен динамическая загрузка - выбор контроллера, даже еслиб это мне было нужно, я бы выбрал нужный мне контроллер уже в теле шаблона ng-controller, предварительно подгрузив в resolve: свойстве route
Так и код будет более читаем - сразу понятно кто куда где и как :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы