Использование контроллеров маршрутизации и загрузки 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 показывает, как использовать соглашение по конфигурации для более практичной маршрутизации.