7

在 Ember 应用程序中,假设您有一个观察者或一个观察数组的属性,如下所示:

topContributor: (function() {
  // ... loop over articles (hence slow) ...
}).property('articles.@each.author')

更新articles数组,例如通过 ember-data,总共会重复触发属性函数articles.length

当所有更改都完成并且运行循环被刷新时,有没有办法将更新折叠成一个惰性更新?

4

1 回答 1

10

感谢@wagenet 和@krisselden 提供以下建议:

目前,虽然绑定被延迟(惰性),但观察者和扩展计算属性会立即触发。将来,它们也可能会被推迟

同时,您可以使用Ember.run.once作为一种解决方法来安排延迟函数调用,该函数调用只会运行一次。我想,计算属性可以很容易地变成观察者以遵循相同的模式。这是一个例子:

updateTopContributor: function() {
  // ... loop over articles (hence slow) ...
  this.set('topContributor', ...);
},

_updateTopContributorObserver: (function() {
  Ember.run.once(this, 'updateTopContributor');
}).observes('articles.@each.author')
于 2012-09-17T22:47:02.043 回答