我是AngularJS的新手。事情进展顺利,但我的controller.js
很大,所以我想把它拆成小文件。
现在,我的index.html
标题包含这些行
<script src="js/services/date_picker_service.js"></script>
<script src="js/controllers/common.js"></script>
<script src="js/controllers/overview_map_controller.js"></script>
<script src="js/controllers/overview_locations_controller,%20.js"></script>
<script src="js/controllers/other_controllers.js"></script>
并加载我的应用
Error: [$injector:unpr] Unknown provider: dateServiceProvider <- dateService
http://errors.angularjs.org/1.2.9/$injector/unpr?p0=dateServiceProvider%20%3C-%20dateService
at https://code.angularjs.org/1.2.9/angular.js:78:12
at https://code.angularjs.org/1.2.9/angular.js:3546:19
at Object.getService [as get] (https://code.angularjs.org/1.2.9/angular.js:3673:39)
at https://code.angularjs.org/1.2.9/angular.js:3551:45
at getService (https://code.angularjs.org/1.2.9/angular.js:3673:39)
at invoke (https://code.angularjs.org/1.2.9/angular.js:3700:13)
at Object.instantiate (https://code.angularjs.org/1.2.9/angular.js:3721:23)
at https://code.angularjs.org/1.2.9/angular.js:6772:28
at https://code.angularjs.org/1.2.9/angular.js:6185:34
我猜测问题是<header>
中的脚本文件是异步加载的吗?
问题:我该如何解决这个问题,这样我就不需要回到一个谦逊的controller.js
?
[更新]在将大文件拆分成小文件时,我犯了一个愚蠢的错误。忘了约会服务。非常抱歉。我把答案发给了那个帖子让我想到的人D'oh!
抱歉浪费你的时间。
答案 0 :(得分:1)
可能你可以重构你的控制器,让它的数据来自多个服务,所以你的控制器会显得更小。
您可以做的另一件事是将控制器拆分为多个控制器,用于视图的子组件。
控制器基本上负责视图。我无法想象一个控制器需要同时加载4-5件以上的东西。重构是你的方式,我重新考虑。
除此之外,这里有一种定义依赖于服务的控制器的方法:
angular.module('someModule', ['depends.on.otherModule'])
.controller('MyController',['Service', function(Service){
...codez
}]);
因此,在您的情况下,您的控制器应该是模块的一部分,该模块依赖于date_picker_service.js为表带来的模块。