我已經在那裏我配置這樣的路由模塊:NG-視圖 - 在模板頁面負載控制器
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是沒有定義的。
這是正確的方法嗎?
[使用使用需求requirejs AngularJS的路由和負載控制器(http://stackoverflow.com/questions/15155457/using-angularjs-routing-的可能的複製and-loading-controllers-on-demand-using-requirejs) – Zakaria
我認爲你需要強調你想要的東西,因爲我所看到的答案完全脫離了上下文。我只能從你的問題中瞭解到,你希望特定模板所需的腳本文件僅包含在模板中,而不包含在母版頁上 –
是的,我會在各種模板頁面中加載腳本文件,但似乎我的方法錯誤 – lpernice