2016-08-23 2 views
0

そのモジュール名を動的に入力することは可能ですか?コードの重複を避けようとしています。ここに私が持っているものがあります:モジュールに動的に入力された名前

app-categories.js;

(function() { 
 

 
    "use strict"; 
 

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

アプリ-tasks.js:

(function() { 
 

 
    "use strict"; 
 

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

そして中に、多くのモジュールで共有されなければならない今、別のコントローラのaddNewTaskController.js "私の場合、「アプリカテゴリ」と「アプリタスク」:

(function() { 
 

 
    "use strict"; 
 

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

答えて

0

@estusの提案が有用でした。私は元々計画していたコントローラを別に保つことができ、2つのコントローラが共有する共通の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

あなたのご意見をお寄せいただきありがとうございます。私はあなたの答えをアップしました。ありがとうございました – lucas

関連する問題