当我计算依赖于关系的属性时,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
})