Использование контроллеров маршрутизации и загрузки AngularJS по требованию с использованием requirejs
Я пытаюсь использовать AngularJS и RequireJS в комбинации. Я хотел бы использовать службу $routeProvider
и не загружать все контроллеры для своих просмотров при запуске приложения. Для этого я попробовал следующее:
define(['require', 'angular', 'appModule'], function (require, angular, app) {
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
require(['sitesController'], function(SitesController) {
return new SitesController();
})
}})
}]);
});
К сожалению, это не сработало для меня. Ошибок нет. Файл JS, содержащий контроллер, загружается правильно, но я не вижу значения привязки данных в визуализированном представлении. Мне было интересно, могу ли я присвоить значение controller
каким-либо другим способом, который будет ждать завершения асинхронного вызова (для загрузки файла JS).
Любые идеи?
Ответы
Ответ 1
Вы можете найти решение здесь
Вам необходимо определить свойство разрешения на каждом маршруте и назначить ему функцию, которая возвращает обещание. Функция может динамически загружать script содержит целевой контроллер и разрешать обещание после завершения загрузки. В этой статье Dan Wahlin показывает, как использовать соглашение по конфигурации для более практичной маршрутизации.