我的模型是一个树结构,其中子对象的位置相对于其父对象。
基本上,它看起来像这样:
var Node = Ember.Object.extend({
parent: null,
location: null,
absoluteLocation: Ember.computed('location', 'parent', 'parent.absoluteLocation', function() {
var parent = this.get('parent');
if(parent) {
return this.get('location') + parent.get('absoluteLocation');
} else {
return this.get('location');
}
})
});
父属性是Node类的另一个实例。
理论上,当父级的位置更新时,这应该以递归方式更新所有子级的absoluteLocation。但是,这不是我所看到的。现在,在我的应用程序中,主节点的位置和绝对位置为-39,子节点的位置为-116,同一子节点的绝对位置为-56。这不会加起来。
可能是某个地方的Ember有一个错误,还是我找错了?
请注意,我已经简化了上面的例子,实际上这是一个Ember Data对象,而且该位置是一个二维对象。此外,absoluteLocation属性在mixin中定义或使用reopen(两者都尝试过)。我希望通过删除这些细节我没有“修复”它。
这是关于Ember 1.13.2。
答案 0 :(得分:0)
原来是一个灰烬问题。更新到2.0后它会变得更好,但仍然没有完全修复。
我最终没有使用属性依赖来解决这个问题,而是手动触发刷新。