递归观察者依赖?
Recursive Observer Dependencies?
我的模型是一个树结构,其中 child object 的位置是相对于它的 parent。
基本上是这样的:
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');
}
})
});
parent 属性 是节点 class 的另一个实例。
理论上,当 parent 的位置更新时,这应该递归地更新所有 children 的 absoluteLocation。但是,这不是我所看到的。现在在我的应用程序中,主节点的位置和绝对位置为 -39,child 的位置为 -116,child 的绝对位置为 -56。这不合算。
可能是 Ember 某处存在错误,还是我发现问题的方向有误?
请注意,我已经简化了上面的示例,实际上这是一个 Ember 数据 object 并且位置是 two-dimensional object .此外,absoluteLocation 属性 是在 mixin 中定义的或使用重新打开(都尝试过)。我希望我没有通过删除这些细节来“修复”它。
这是在 Ember 1.13.2.
原来是 ember 问题。更新到2.0后好多了,但还是没有完全修复。
我最终没有使用 属性 依赖项来解决这个问题,而是手动触发刷新。
我的模型是一个树结构,其中 child object 的位置是相对于它的 parent。
基本上是这样的:
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');
}
})
});
parent 属性 是节点 class 的另一个实例。
理论上,当 parent 的位置更新时,这应该递归地更新所有 children 的 absoluteLocation。但是,这不是我所看到的。现在在我的应用程序中,主节点的位置和绝对位置为 -39,child 的位置为 -116,child 的绝对位置为 -56。这不合算。
可能是 Ember 某处存在错误,还是我发现问题的方向有误?
请注意,我已经简化了上面的示例,实际上这是一个 Ember 数据 object 并且位置是 two-dimensional object .此外,absoluteLocation 属性 是在 mixin 中定义的或使用重新打开(都尝试过)。我希望我没有通过删除这些细节来“修复”它。
这是在 Ember 1.13.2.
原来是 ember 问题。更新到2.0后好多了,但还是没有完全修复。
我最终没有使用 属性 依赖项来解决这个问题,而是手动触发刷新。