我使用
angular-seed模板来构造我的应用程序。最初,我把所有的JavaScript代码放在一个单一的文件,main.js.此文件包含我的模块声明,控制器,指令,过滤器和服务。应用程序工作正常,像这样,但我担心可扩展性和可维护性,因为我的应用程序变得更加复杂。我注意到角种子模板有其中每个的单独的文件,所以我试图将我的代码从单个main.js文件分发到每个其他文件中提到的问题的标题,并在应用程序中找到/ js目录下的
angular-seed模板。
@H_403_1@我的问题是:我如何管理依赖以使应用程序工作?现有的文档here在这方面不是很清楚,因为给出的每个示例显示单个JavaScript源文件。
@H_403_1@我有一个例子是:
@H_403_1@app.js
angular.module('myApp',['myApp.filters','myApp.services','myApp.controllers']);@H_403_1@controllers.js
angular.module('myApp.controllers',[]). controller('AppCtrl',[function ($scope,$http,$filter,MyService) { $scope.myService = MyService; // found in services.js // other functions... } ]);@H_403_1@filters.js
angular.module('myApp.filters',[]). filter('myFilter',[function (MyService) { return function(value) { if (MyService.data) { // test to ensure service is loaded for (var i = 0; i < MyService.data.length; i++) { // code to return appropriate value from MyService } } } }] );@H_403_1@services.js
angular.module('myApp.services',[]). factory('MyService',function($http) { var MyService = {}; $http.get('resources/data.json').success(function(response) { MyService.data = response; }); return MyService; } );@H_403_1@main.js
/* This is the single file I want to separate into the others */ var myApp = angular.module('myApp'),[]); myApp.factory('MyService',function($http) { // same code as in services.js } myApp.filter('myFilter',function(MyService) { // same code as in filters.js } function AppCtrl ($scope,MyService) { // same code as in app.js }@H_403_1@如何管理依赖关系? @H_403_1@提前致谢。
该问题是由您在所有单独的文件中“重新声明”应用程序模块引起的。
@H_403_1@这是什么应用程序模块声明(不确定声明是正确的术语)看起来像:
angular.module('myApp',[]).controller( //...@H_403_1@这是什么分配(不确定如果分配是正确的术语)到您的应用程序模块看起来像:
angular.module('myApp').controller( //...@H_403_1@注意缺少方括号。 @H_403_1@所以,前一个版本,一个带方括号,应该只使用一次,通常在你的app.js或main.js.所有其他相关文件 – 控制器,指令,过滤器… – 应使用后一版本,一个没有方括号。 @H_403_1@我希望这是有道理的。干杯!