如何等待加载结束后才通知关系已更改



当我计算依赖于关系的属性时,Ember-data有一个很大的性能问题。

当从服务器加载对象时,Ember要求服务器加载computed属性的依赖关系来计算它。

好的,这就是良好的行为。

但是,当我用对象加载关系(使用JSON API加载)时,Ember不会等到关系(侧)加载结束才通知更改!

那么,对于这个计算关系:

my_computed_relation: Ember.computed.filterBy('my_relation', 'attribute', false)

,即使我用对象加载"my_relation", my_computed_relation也会要求服务器在对象初始化结束之前加载"my_relation"。关系被加载两次。

你有解决性能问题的办法吗?

(烬:1.13.3 -烬数据:1.13.12)

Frederic

如果这个计算属性碰巧在短时间内被通知,你可以在观察者函数中使用Ember.run.debounce()并自己实现过滤器函数。

例如:

mcrObserver: Ember.observer('my_relation', function() {
  const filterRelation = () => {
    let relation = this.get('my_relation');
    if (!relation) {
      return;
    }
    // ... your implementation of filter
    this.set('my_relation_computed', result); // when you finally have result
  }
  Ember.run.debounce(this, filterRelation, 500); // 500 is time in ms
})

最新更新