2016-08-23 83 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