Angular:将代码结构化为许多小文件

时间:2014-04-23 07:44:42

标签: angularjs

我是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!抱歉浪费你的时间。

1 个答案:

答案 0 :(得分:1)

可能你可以重构你的控制器,让它的数据来自多个服务,所以你的控制器会显得更小。

您可以做的另一件事是将控制器拆分为多个控制器,用于视图的子组件。

控制器基本上负责视图。我无法想象一个控制器需要同时加载4-5件以上的东西。重构是你的方式,我重新考虑。

除此之外,这里有一种定义依赖于服务的控制器的方法:

angular.module('someModule', ['depends.on.otherModule'])

.controller('MyController',['Service', function(Service){

...codez
}]);

因此,在您的情况下,您的控制器应该是模块的一部分,该模块依赖于date_picker_service.js为表带来的模块。