AngularJS模块依赖注入与父模块共享它的依赖
AngularJS module dependency injection sharing its dependencies with parent module
我有一个AngularJS模块:
angular.module("app", ['ui.bootstrap', 'ngRoute', 'ngGridPanel']).config(function($routeProvider) {
你可以看到ngGridPanel
是通过依赖注入包含的。
下面是ngGridPanel
的模块/指令的定义:
angular.module('ngGridPanel', ['ngAnimate']).directive('gridPanel', ['$animate', '$compile', '$window', '$document', '$timeout', function ($animate, $compile, $window, $document, $timeout) {
如您所见,它指的是ngAnimate
。
我遇到的问题是,一旦我注入ngGridPanel
到我的应用程序中,我的应用程序中的每个元素都突然试图动画。
现在,正如在这个Angular.js GitHub问题中所描述的,ngAnimate
将假设所有东西都应该是动画的。一旦我意识到这是预期的行为,我意识到我从来没有包括ngAnimate到我的应用模块在第一个地方。
那么为什么它会影响我的整个应用程序呢?它不应该只在属于ngGridPanel
模块的指令中生效吗?
那么ngAnimate
是如何影响父模块作用域的?这正常吗?
旁注:在这一点上,我甚至没有使用ngGridPanel
指令。我只是把它注入了我的应用。
旁注2:一旦我在我的应用程序中实现了一个类名过滤器($animateProvider.classNameFilter(/enable-animate/);
),动画停止在我所有的元素上,但仍然在ngGridPanel
指令中工作,而不必在任何地方添加enable-animate
类。
如果你依赖于ngGridPanel和ngGridPanel依赖于ngAnimate,那么你也依赖于ngAnimate。
这对你来说是完全一样的,如果你已经定义了你的应用程序angular.module("app", ['ui.bootstrap', 'ngRoute', 'ngGridPanel', 'ngAnimate'])
.
至于你的旁注2,似乎很可能他们已经配置它使用类似.classNameFilter()
的东西,以便动画不会中断,如果他们的库的用户决定配置它不同,如你所做的。我对ngAnimate了解不多所以这只是我的直觉
- 节点模块依赖关系
- 角度模块依赖项的命名约定
- 如何管理不同的 Angular 模块依赖关系
- 无法以角度加载新的模块依赖项
- RequireJS:如何处理浏览器和服务器之间共享的代码的不同模块依赖关系
- 与 ngRoute 的模块依赖会破坏角度渲染
- Dojo构建模块依赖关系
- 复杂的循环节点模块依赖抛出“类型错误:'继承'的超级构造函数必须有一个原型”
- 只有在需要AngularJS时才注入模块依赖项(如插件)
- 如何从模块依赖关系(另一个模块)调用函数
- 如何组织angular模块依赖关系
- RequireJS定义了返回错误模块依赖的回调
- RequireJS模块依赖项和包含项
- 在Heroku上使用基于插件的架构的应用程序中,我应该如何处理节点模块依赖关系
- Webpack模块依赖,就像在requirerequirements中一样
- AngularJS模块依赖注入与父模块共享它的依赖
- AngularJS:动态地在运行时定义模块依赖
- 使用browserify消除模块依赖
- 由于URL/散列模块依赖,Travis-CI构建失败
- Angularjs模块依赖循环