我在几个案例中使用Angular和ngAnimate
。在另一个,我有一个指令,正在改变列的宽度(使用Bootstrap col-md-*
类)和一个看起来像这样的简单转换:
.column-view .column {
transition: width 1s;
}
我在这里没有明确地使用ngAnimate
,但它确实让我感到悲伤只是为了被包括在内。基本上,转换在转换到新宽度之前会跳转到零。如果我从模块中删除ngAnimate
,则转换顺利,但我的应用中的其他功能需要ngAnimate
。
我可以禁用ngAnimate
正在进行的纯CSS转换吗?我可以在这做什么来解决这个问题?让我发疯了。
Here is a fiddle证明了这个问题。有关复制的说明,请参阅注释。
答案 0 :(得分:9)
注意:我使用当前的最新版本(AngularJS 1.2.6)来调查您的问题。
我发现内部调用了一个“blockTransitions”函数,它就是这样做的:它会阻止转换。
https://github.com/angular/angular.js/blob/master/src/ngAnimate/animate.js#L1099
如果您注释上面链接的行(“blockTransitions”函数体的单行),问题就解决了。
由于我不知道这是否是一个合适的解决方案(可能不是),我刚刚创建了一个PR,以便他们能够正确解决问题:
https://github.com/angular/angular.js/pull/5552
同样使用最新版本,有一种解决方法:http://jsfiddle.net/2fnhr/3/
app.config(function($animateProvider){
$animateProvider.classNameFilter(/^((?!col-md).)*$/);
});
这只会对名称中不包含“col-md”的类应用ngAnimate内容,从而关闭相关Bootstrap类的ngAnimate。
此处正则表达式的说明:https://stackoverflow.com/a/406408/370290