我是AngularJS开发的新手,我实际上遇到了问题。 在我的index.html中,我已经包含了许多脚本:
<script type="text/javascript" src="libs/angular.min.js"></script>
<script type="text/javascript" src="libs/angular-route.js"></script>
<script type="text/javascript" src="libs/angular-translate/angular-translate.js"></script>
<script type="text/javascript" src="libs/angular-translate-loader-partial/angular-translate-loader-partial.min.js"></script>
<script type="text/javascript" src="app/app.js"></script>
<script type="text/javascript" src="app/controllers/commons/language.js"></script>
更清楚的是,我想将app控制器与app.js分开,就像那样:
home.js => HomeCtrl
about.js => AboutCtrl ..
但是,当然,当我开始路由时,我遇到了这个错误:
Error: [ng:areq] http://errors.angularjs.org/1.2.15/ng/areq?p0=homeCtrl&p1=not%20aNaNunction%2C%20got%20undefined
关于我的homeCtrl不存在。 所以我的问题是,如何指定我的控制器js包含在home.html中,而不是在路由期间的index.html中。 非常感谢。
答案 0 :(得分:0)
您可以让控制器首先加载自己模块中的应用程序。您的模块应该反映您的目录结构以方便。
// app/ctrl/main.js
angular.module('app.ctrl.main' []).controller('mainCtrl', function () {...});
// app/ctrl/about.js
angular.module('app.ctrl.about' []).controller('aboutCtrl', function () {...});
最后加载你的应用程序,使其依赖于上述模块:
// app/app.js
angular.module('app', ['app.ctrl.main', 'app.ctrl.about'])
.config(function ($routeProvider) {
// route configuration
});
你的HTML应该是这样的:
<script type="text/javascript" src="app/ctrl/main.js"></script>
<script type="text/javascript" src="app/ctrl/about.js"></script>
<script type="text/javascript" src="app/app.js"></script>