【问题标题】:Animate with AngularJS from one state to another state within an ng-repeat在 ng-repeat 中使用 AngularJS 从一个状态动画到另一个状态
【发布时间】:2016-04-08 23:13:29
【问题描述】:

我遇到的问题的简化版本:我有一个数组中的项目列表,这些项目使用 ng-repeat 以 Angular 视图显示,例如...

<li ng-repeat="item in items">
    <div class="bar" ng-style="{'width': item.percent + '%'}">{{item.percent}}</div>
</li>

使用一些 CSS 使它看起来像一个条形,并希望为宽度设置动画......

.bar { 
    height: 1em;
    background: blue;
    transition: width 0.5s ease-in-out;
}

我经常用新数据更新整个items 数组,这会改变percent 的值。我希望栏的宽度从以前的百分比值动画到新的百分比值,但似乎ng-repeat 导致整个列表被重绘,所以它失去了以前的样式,transition 动画是永远不会发生。

我研究了其他解决方案,但它们似乎只处理进入/离开,而不是改变。这个动画怎么可能只使用 Angular 和 CSS 来实现?

【问题讨论】:

  • 如何更新 items 数组?

标签: javascript css angularjs css-animations


【解决方案1】:

您是否尝试过使用“track by”来避免每次都重新创建节点?

<li ng-repeat="item in items track by $index">
    <div class="bar" ng-style="{'width': item.percent + '%'}">{{item.percent}}    </div>
</li>

【讨论】:

  • 谢谢!关于track by的更多信息:docs.angularjs.org/api/ng/directive/…
  • 请记住,如果您的“项目”中有一些唯一标识符属性,您可能应该使用该属性而不是 $index 进行跟踪
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 2013-06-28
  • 1970-01-01
  • 2022-09-25
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
相关资源
最近更新 更多