父模块指令可以用在像控制器这样的子模块中吗?

时间:2017-04-27 10:23:00

标签: angularjs angularjs-directive angularjs-module

就像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错误。

1 个答案:

答案 0 :(得分:1)

  

正如控制器是模块“级别”独立并且可以使用   任何地方

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

即。如果您有2个模块:app和app.child,并且在app.child中的某个位置,您拥有:<div ui-sref=...,而您的app.child必须依赖于ui-router。 (如果没有,这仍然有效,但是父母会这样做 - 但这并不意味着这是正确的方式)

N.B。很多应用程序都可以在单个模块中保留。你确定你需要不止一个吗?