我有一个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
注入我的应用,我的应用中的每个元素都会突然尝试动画。
现在,作为described in this Angular.js GitHub issue,ngAnimate
将假设所有内容都应设置动画。一旦我意识到这是预期的行为,我意识到我从未将ngAnimate首先纳入我的app模块。
那为什么会影响我的整个申请?它不应该只在属于ngGridPanel
模块的指令中生效吗?
那么ngAnimate
如何影响父模块范围?这是正常的吗?
旁注:此时我甚至根本没有使用ngGridPanel
指令。我只是将它注入我的应用程序。
旁注2:在我的应用中实现了类名过滤器($animateProvider.classNameFilter(/enable-animate/);
)后,动画停止在我的所有元素上,但仍然在ngGridPanel
指令中工作,无需在任何地方添加enable-animate
类。
答案 0 :(得分:1)
如果你依赖于ngGridPanel而ngGridPanel依赖于ngAnimate,那么你也依赖于ngAnimate。
对您来说,就像您定义了应用程序一样
angular.module("app", ['ui.bootstrap', 'ngRoute', 'ngGridPanel', 'ngAnimate'])
。
至于你的附注2,似乎他们已经将它配置为使用像.classNameFilter()
这样的东西,这样如果他们的图书馆的用户决定以不同的方式配置它,动画就不会破坏,例如就像你做的那样。我对ngAnimate知之甚少,所以这只是一种预感。