6

我目前正在观察一些 Ember 数组,如下所示:

 observe_array: function() {
     this.get("my_array").forEach(function(e,i) {
         // do something
     });
 }.observes("my_array.@each");

大多数情况下,如果 my_array 被更新,多个元素会同时添加。但是,观察者会在添加每个元素时一个接一个地触发,这变得非常低效。反正有没有更有效地做到这一点?本质上,我需要能够拥有一个基于“my_array”的变异数组

作为参考,my_array 的实际大小将在 600-1200 个元素之间。“做某事”块涉及一些需要更多时间的操作 - 从字符串创建 Date 对象并将每个元素转换为 json 表示。

我没有做一个观察者,我还尝试了一个带有 cacheable() 方法/标志的属性,但这并没有很好地加快速度......

4

1 回答 1

1

假设(通过注释)您的数组是一个填充了 ember 数据的数组,您应该尝试观察array.isUpdating属性。我用这个成功了。

唯一的缺点是它只在使用时设置.findAll()!(所以Model.find()

于 2012-10-30T10:01:43.273 回答