2016-08-23 56 views
0

是否可以使该模块名称动态填充。我试图远离代码重复。这里是我有:模块的动态填充名称

app-categories.js;

(function() { 
 

 
    "use strict"; 
 

 
    angular.module("app-categories", ["simpleControls", "ngRoute", "ngAnimate", "addNewTask"]) 
 
     .config(function ($routeProvider) {

APP-tasks.js:

(function() { 
 

 
    "use strict"; 
 

 
    angular.module("app-tasks", ["simpleControls", "ngRoute", "addNewTask"]) 
 
    .config(function ($routeProvider) {

现在另一控制器 'addNewTaskController.js' 应该由许多模块共享,在我的例子是'app-categories'和'app-tasks':

(function() { 
 

 
    "use strict"; 
 

 
    //angular.module("app-categories") 
 
    angular.module("app-tasks") 
 
    .controller("addNewTaskController", addNewTaskController);

回答

0

@estus的建议很有用。我仍然可以保留独立的控制器,就像我原先计划的那样,最终创建一个通用的js文件,并由两个控制器共享,消除了所提到的代码重复。

这里是如何我已经成功地做到这一点:

addNewTaskControllerForAppCategoriesModule.js:

(function() { 
 

 
    "use strict"; 
 

 
    angular.module("app-categories") 
 
    .controller("addNewTaskController", addNewTaskController); 
 
})();

addNewTaskControllerForAppTasksModule:

(function() { 
 

 
    "use strict"; 
 

 
    angular.module("app-tasks") 
 
    .controller("addNewTaskController", addNewTaskController); 
 
})();

addNewTaskCommon.js:

function addNewTaskController($scope, $http, $rootScope) { 
 

 
    ... 
 
}

1

有了这个自动执行的应避免所有模块,因为它会导致弊大于利。

,能够创建用于

angular.module("app-common", ["simpleControls", "ngRoute", "addNewTask"]); 

公共模块和装载它,而不是。

它仍然不应该被机械地包含,因为一些common模块可能会导致在单独测试模块时不可取的副作用。

+0

那么,这意味着功能和“addNewTaskController”内相应的代码将被复制的“应用任务”和“应用程序在这种情况下“类别”? – lucas

+0

模块只加载一次。请注意,'common'模块最好不要包含'config'和'run'块,这些块最常引起'副作用'。 – estus

+0

我很欣赏你的意见,它帮助我,upvoted你的答案,谢谢 – lucas