ngClassOdd/ngClassEven 未按预期工作

2024-04-28

使用 Angular 版本 1.2.15,我发现了一个错误,该错误似乎从版本 1.2.2 开始直到 1.2.15。

重现 Plunker 演示 http://plnkr.co/edit/3nExMtZ92AQS7BvLsQ8m?p=preview

Html

<body ng-app="">
     <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz','Felipe','Vero']">
     <li ng-repeat="name in names">
      <span ng-class-odd="'shared odd'" ng-class-even="'shared even'">
        {{name}}
      </span>
     </li>
   </ol>
</body

CSS

 .shared {color: red;}
 .even{ background-color:yellow; }
 .odd{ background-color:white; }

您将看到奇怪的样式如何在第三元素上不起作用。

这个问题有什么解决方法吗?

如果不是,什么升级或降级更有意义?


这是一个已知的错误并已修复,所以为什么不更新到v1.2.16 ?
它按预期工作v1.2.16.

如果你想继续留在v1.2.15你应该使用摩根的解决方案(ng-class + $index),或者只包含一类ngClassOdd/ngClassEven:

<span class="shared" ng-class-odd="'odd'" ng-class-even="'even'">

顺便说一句,1.2.16 版本中没有重大更改(根据变更日志 https://github.com/angular/angular.js/blob/master/CHANGELOG.md#user-content-1.2.16),所以升级应该是完全透明的。


UPDATE:

为了完整起见,我应该提到可以选择使用ngRepeat's $even/$odd特性。例如。:

<span ng-class="$even?'shared odd':'shared even'">

Note:
Since the list of items displayed by ngRepeat is 0-based, the 1st element ($index: 0) is considered odd, while we (humans) expect the 1st element to be considered even. So, make sure you apply the classes "inversely".
The same is true for the ngClass + $index approach.


推荐的解决方案仍然是升级到v1.2.16.
万一,这是一个笨蛋 http://plnkr.co/edit/HuCSxoLxEBb6PFacpIVx?p=preview与所有 3 个v1.2.15解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ngClassOdd/ngClassEven 未按预期工作 的相关文章

随机推荐