Angular ng-animate 1.3.*导致ng-class inside指令的意外行为

che*_*zer 15 angularjs angularjs-directive ng-animate ng-class isolate-scope

我正处于从版本1.2.*转换到1.3.*的过程中,我遇到了一个非常奇怪且严重的错误.

在我的应用程序中,我有一个非常简单的directive包含templatewith ng-class(具有范围属性的条件)由于某种原因它不适用于1.3.*版本,并且它与1.2.*版本一起正常工作.

看看这个 Plunker来说明问题.

Plunker代码使用角度1.2.*版本,您可以看到它的工作正常.

尝试更改角度版本(index.html)

<script src="https://code.angularjs.org/1.3.9/angular.js"></script>
    <script src="https://code.angularjs.org/1.3.9/angular-animate.js"></script>
   <!--<script src="https://code.angularjs.org/1.2.28/angular.js"></script>
   <script src="https://code.angularjs.org/1.2.28/angular-animate.js"></script>-->
Run Code Online (Sandbox Code Playgroud)

刷新页面,然后您可以看到错误:
Angular不会根据'active'属性更改来刷新ng-class.

我试图了解导致此错误的原因,经过大量尝试后我发现该'ngAnimate'模块导致了这个问题.尝试删除'ngAnimate'依赖项(script.js):

  //var app = angular.module('app', ['ngAnimate']);
    var app = angular.module('app', []);
Run Code Online (Sandbox Code Playgroud)

然后你可以看到一切都很好,因此'ngAnimate'版本1.3.*会导致这个问题.

所以这是AngularJS的错误,我是对的吗?

如果没有,我做错了什么?

Fis*_*sio 7

您是否有任何特定理由replace在指令中使用该选项?如果没有,你可以删除它,它工作正常.使用Angular 1.3.9链接到工作的plunker:

http://plnkr.co/edit/jLIS9uJ1PHC64q6nEmtB?p=preview

V1.3.9文档告诉我们这种replace方法已被弃用,很少需要指令才能工作,显然在你的情况下它也会造成一些麻烦.