У меня есть модуль, в котором я настраиваю маршрут следующим образом:
var app = angular.module("myModule", ['ui.grid','ui.bootstrap','ngRoute']);
app.config(function ($routeProvider) {
$routeProvider.when('/subjects', {
templateUrl: 'Subjects.aspx',
controller: 'SubjectsController'
})
}
На странице шаблона я настраиваю контроллер следующим образом:
<script src="/Scripts/SPScripts/Services/SubjectService.js"></script>
<script src="/Scripts/SPScripts/Controllers/SubjectController.js"></script>
<div id="dvcollection" data-ng-controller="SubjectController">
<div style="padding-left: 15px; padding-bottom: 10px;">
<button type="button" id="addRow" class="btn btn-success" data-ng-click="addRow()">Nuovo</button>
</div>
<div class="gridStyle" data-ui-grid="gridOptions"></div>
</div>
Таким образом, контроллер не определен и создается впечатление, что скрипты загружаются на страницу неправильно.
Если я перемещаю сценарии на своей главной странице (куда я загружаю угловой модуль), контроллер загружается правильно.
Мастер-страница:
<script src="/Scripts/SPScripts/Modules/Module.js"></script>
<div class="container body-content" data-ng-app="myModule">
<div data-ng-view></div>
</div>
Я хотел бы загрузить различные контроллеры на тех страницах, где это необходимо, чтобы не нагружать приложение, так как они все загружаются на главную страницу.
**** - РЕДАКТИРОВАТЬ - ****
Кажется, я могу загружать скрипты, используя «разрешить» в маршруте:
var resolveController = function (path) {
var deferred = $q.defer();
var script = document.createElement('script');
script.src = path;
script.onload = function () {
$scope.$apply(deferred.resolve());
};
document.body.appendChild(script);
return deferred.promise;
};
app.config(function ($routeProvider) {
$routeProvider.when('/subjects', {
templateUrl: 'Subjects.aspx',
controller: 'SubjectsController',
resolve: resolveController('/Scripts/SubjectController.js')
})
}
Но я получаю ошибку: $ q не определен.
Это правильный путь?