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

标签 angularjs angularjs-directive ng-animate ng-class isolate-scope

我正处于从版本 1.2.* 到 1.3.* 的过渡中,我遇到了一个非常奇怪的 关键 漏洞。

在我的应用程序中,我有一个非常简单的 directive包含 templateng-class (具有范围属性的条件)由于某种原因它不适用于 1.3.* 版本,但它适用于 1.2.* 版本。

看看这个Plunker来说明问题。

这个Plunker代码是 angular 1.2.* 版本,你可以看到它工作正常。

尝试更改 Angular 版本(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>-->

刷新页面,然后你可以看到错误:
Angular 不会根据“事件”属性的变化来刷新 ng-class。

我试图了解导致此错误的原因,经过多次尝试后我发现 'ngAnimate'模块导致此问题。尝试删除'ngAnimate'依赖项(script.js):
  //var app = angular.module('app', ['ngAnimate']);
    var app = angular.module('app', []);

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

所以它是 AngularJS 错误 , 我对吗?

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

最佳答案

你有什么特别的理由使用 replace指令中的选项?如果没有,您可以将其删除,它可以正常工作。使用 Angular 1.3.9 链接到工作 plunker:

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

V1.3.9 docs告诉 replace已被弃用并且很少需要指令起作用,显然在您的情况下它也设法造成了一些麻烦。

关于angularjs - Angular ng-animate 1.3.* 导致 ng-class inside 指令出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28045585/

相关文章:

javascript - AngularJS - 从 .NET Controller 生成 View 只执行一次

javascript - Angular animate 的 classNameFilter 与 Angular-bootstrap

javascript - Uib-Dropdown 在 HTML View 主体中不起作用

angularjs - 将状态类应用于 ui-view 以允许不同的 ng 动画

javascript - angularjs checkbox onchange 在表单中不起作用。$pristine

javascript - 如何处理 AngularJS 中文本输入的条件焦点和选择?

javascript - 为 ng-repeat 中的长引用名称分配别名

javascript - 表格 Angular 过滤器

javascript - 将 ng-model-options 与 ngModelController 一起使用

javascript - 最佳实践 : Wrap a template in another template in AngularJS?