【问题标题】:Can parent module directives be used in child modules like controllers?父模块指令可以在控制器等子模块中使用吗?
【发布时间】:2017-09-25 02:06:39
【问题描述】:

正如controllers 是模块“级别”独立的并且可以在整个应用程序堆栈中的任何位置使用我想知道是否有办法让子模块使用父模块指令而不必将它们分配为每个模块的依赖项子模块。

我希望指令如何工作的示例(在controller 看来):

angular.module('app.child').config(function($stateProvider) {
  $stateProvider.state('child', {
    url: '/child',
    views: {
      'header': {
        controller: 'parentController',
        templateUrl: 'child.html'
      }
    }
  });
});

angular.module('app').controller('parentController', function () {
  console.log('test');
});

所以我想知道的是如果

angular.module('app', ['app.child']);
angular.module('app.child', ['ui.router']);

也可以写成

angular.module('app', ['app.child', 'ui.router']);
angular.module('app.child', []);

以某种方式,ui.router 仍可用于子模块。

如果我在现有项目中执行此操作,我会收到 $injector 错误。

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-module


    【解决方案1】:

    就像控制器是模块“级别”独立并且可以使用一样 任何地方

    这是真的,这是你不应该做的事情。 模块应该是自洽的并且独立于父模块 - 它应该声明所有必需的依赖关系。

    即如果你有 2 个模块:app 和 app.child,并且在 app.child 的某个地方你有:<div ui-sref=...,那么你的 app.child 必须依赖于 ui-router。 (如果没有,这仍然有效,但父母可以 - 但这并不意味着这是正确的方式)

    注意许多应用程序可以留在单个模块中。你确定你需要不止一个吗?

    【讨论】:

    • 我刚刚听说在构建应用程序时使用多个模块是一种很好的做法,所以我想把底层结构做得很好。但是,如果我有 5 个子模块并且每个子模块都使用 ui-router 作为依赖项,它是否会大大降低我的应用程序速度?或者我应该以某种方式将它们组合在一起?
    • 不,它不会减慢您可能多次具有相同的依赖关系 - 没关系。使用多个模块 - 就像 Maven/JAVA 中的多个项目一样,您可能拥有它们,也可能没有。这更多的是关于代码组织,直到您在多个应用程序/用户之间共享您的代码。 (如 npm/bower)
    • 太棒了!感谢您的帮助,我一定会记住这一点:)
    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多