递归观察者依赖关系?

时间:2015-07-14 16:19:11

标签: recursion ember.js key-value-observing

我的模型是一个树结构,其中子对象的位置相对于其父对象。

基本上,它看起来像这样:

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。

1 个答案:

答案 0 :(得分:0)

原来是一个灰烬问题。更新到2.0后它会变得更好,但仍然没有完全修复。

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