【问题标题】:What is the best way ( performance wise ) to animate numbers? [closed]动画数字的最佳方法是什么(性能方面)? [关闭]
【发布时间】:2015-07-23 14:58:06
【问题描述】:

在我的 angular.js 应用程序中,我使用了这个指令:

https://github.com/sparkalow/angular-count-to

这在网络上效果很好。

当我为phonegap编译它时,它真的很慢。

但是我有什么其他方法可以在两秒内将一个数字从 0 变为 200(例如),而不会影响我的应用程序的性能?

【问题讨论】:

  • 我会使用指令并避免任何导致摘要的方法,并直接更新元素而不是依赖摘要周期来更新计数器。您链接到的插件似乎每 30 毫秒导致一个摘要周期。 O.o
  • 你知道有什么指令不会像疯子一样做摘要吗?
  • 不。但是,建造一个不会太难。 (我不会)

标签: angularjs animation angularjs-directive


【解决方案1】:

该指令使用$timeout,这是在Angular 中获得setTimeout 功能的建议方法。这样做可能是出于以下原因之一,但也有其他原因:

  1. 易于注入用于测试的模拟
  2. 假设每个步骤都应该允许其他组件更新
  3. 这是“角度方式”

我不认为 #2 实际上是一个大问题,因为它不会暴露值或更新范围内的任何内容,并且会执行标准 HTML textContent 操作。

无论如何,重点是$timeout 执行setTimeout$digest(允许Angular 更新其他组件)。额外的摘要周期可能是缓慢的部分,每个 Angular 开发人员都应该阅读它们,因为它们是 Angular 设计的核心(提示:go read up on these now)。因此,采用原始库,用setTimeout 调用替换$timeout(以及可选地,在完成时手动摘要触发器,在if (step >= steps) 块中)应该加快它的速度。

但请注意此类更改 - $timeout 通常是正确的选择。

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2014-11-03
    • 2017-12-07
    • 2010-11-16
    相关资源
    最近更新 更多