Javascript ng视图-在模板页面中加载控制器

Javascript ng视图-在模板页面中加载控制器,javascript,angularjs,angular-ui-router,ng-view,ng-controller,Javascript,Angularjs,Angular Ui Router,Ng View,Ng Controller,我有一个模块,我在其中配置了如下路由: var app = angular.module("myModule", ['ui.grid','ui.bootstrap','ngRoute']); app.config(function ($routeProvider) { $routeProvider.when('/subjects', { templateUrl: 'Subjects.aspx', controller: 'Subje

我有一个模块,我在其中配置了如下路由:

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>
在模板页面中,我按如下方式配置控制器:

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>
但我检索到错误:$q未定义


这是正确的方法吗?

尝试以下操作:从角度模块文件的模板中删除数据ng controller=“SubjectController”:

var app = angular.module("myModule", ['ui.grid','ui.bootstrap','ngRoute']);
app.config([ $routeProvider , function ($routeProvider) {
        $routeProvider.when('/subjects', {
            templateUrl: 'Subjects.aspx',
            controller: 'SubjectsController'
        });
    }])
然后在模板文件中

<div id="dvcollection" >
            <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>

编辑后,您似乎没有在解析器中“注入”$q:

var resolveController = function ($q,$rootscope) {
  var deferred = $q.defer();
  var script = document.createElement('script');
  script.src = '/Scripts/SubjectController.js';
  script.onload = function () {
    $rootscope.$apply(deferred.resolve());
  };
  document.body.appendChild(script);
  return deferred.promise;
};

app.config(function ($routeProvider) {
    $routeProvider.when('/subjects', {
        templateUrl: 'Subjects.aspx',
        controller: 'SubjectsController',
        resolve: { resolveController: resolveController
    })
}
我将$scope替换为$rootscope,并将其注入,因为$scope未定义

希望这对您有所帮助,您可以通过有趣的讨论找到它。

您需要这样做:

$injector = angular.injector(['ng']);
q = $injector.get('$q');
var deferred = q.defer();

我想你需要强调你想要什么,因为我看到的答案完全脱离了上下文。从你的问题中我所能理解的是,你希望特定模板所需的脚本文件仅包含在模板中,而不包含在母版页上是的,我会在各个模板页面中加载脚本文件,但我的方法似乎是错误的SubjectController或SubjectsController?请检查controllersorry中的SubjectController名称,名称是否正确。这只是一个书写错误