递归观察者依赖?

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后好多了,但还是没有完全修复。

我最终没有使用 属性 依赖项来解决这个问题,而是手动触发刷新。