我是 AngularJS 的新手。在我努力学习的过程中,我依赖于 AngularJS 教程。现在,我正在尝试使用 AngularSeed 项目模板构建一个应用程序。我正在努力使我的项目尽可能模块化。出于这个原因,我的控制器被分成几个文件。目前,我有以下内容:
/app
index.html
login.html
home.html
javascript
app.js
loginCtrl.js
homeCtrl.js
我的 app.js 文件具有以下内容:
'use strict';
var app = angular.module('site', ['ngRoute']);
app.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider.when('/login', {templateUrl: 'app/login.html', controller:'loginCtrl'});
$routeProvider.when('/home', {templateUrl: 'app/home.html', controller:'homeCtrl'});
$routeProvider.otherwise({redirectTo: '/login'});
});
我的 loginCtrl.js 文件目前非常基本。它只有:
'use strict';
app.controller('loginCtrl',
function loginCtrl($scope) {
}
);
我的 homeCtrl.js 几乎是一样的,除了名字。它如下所示:
'use strict';
app.controller('homeCtrl',
function homeCtrl($scope) {
}
);
我的 index.html 文件是 angularSeed index-async.html文件。但是,当我加载依赖项时,我有以下内容:
// load all of the dependencies asynchronously.
$script([
'http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.min.js',
'http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular-route.min.js',
'javascript/app.js',
'javascript/loginCtrl.js',
'javascript/homeCtrl.js'
], function() {
// when all is done, execute bootstrap angular application
angular.bootstrap(document, ['site']);
});
我的问题是,有时我的应用程序可以工作,有时却不能。这几乎就像在其他东西之前加载了一些东西。
有时,我会收到此错误。其他时候,我在控制台窗口中收到错误消息:loginCtrl.js 中的“未捕获的 ReferenceError:应用程序未定义”。有时它会发生在 homeCtrl.js 上。
我究竟做错了什么?感觉就像我需要将我的控制器放在一个模块中,并在 app.js 文件中的 app.config 中传递该模块。但是,a)我不确定这是否允许,b)我不确定该怎么做。