模块

时间:2016-08-23 21:26:45

标签: angularjs

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

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);

2 个答案:

答案 0 :(得分:1)

应该避免为所有模块自动执行此操作,因为这会造成更多弊大于利。

可以为该

创建一个通用模块
angular.module("app-common", ["simpleControls", "ngRoute", "addNewTask"]);

然后加载它。

它仍然不应该被机械地包括在内,因为来自common的某些模块可能会导致在单独测试模块时不希望出现的副作用。

答案 1 :(得分: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) {

    ...
}