1

我正在进行 ember 1.12.1 -> 1.13.11 和 ember data 1.0.0-beta.19.1 -> 1.13.15 更新。我之前有一个模板:

{{a-component parent=model.parent}}

和一个组件

parentChanged: on('init', observer('parent', function() {
  var parent = this.get('parent');
  if (parent) {
    parent.get('child').then(child => {
      this.set('child', child);
    });
  }
}))

这以前有效,但在更新后,调用child后未定义。then我不得不把它改成

parentChanged: on('init', observer('parent', function() {
  var parent = this.get('parent');
  if (parent) {
    parent.then(parent => {
      parent.get('child').then(child => {
        this.set('child', child);
      });
    });
  }
}))

让它像更新前一样恢复工作。

有人知道为什么是这样吗?似乎模板在更新后停止解决承诺。

4

1 回答 1

1

交叉链接 https://github.com/emberjs/ember.js/issues/12732

因此,经过一些挖掘和重现http://emberjs.jsbin.com/ququdenari/edit?html,js,output,我无法在 1.12.1 中仅使用承诺来获得最初的工作案例。这让我相信这可能是 ember-data 建立关系承诺的方式,并且由于我从 1.0.0-beta.19.1 更新到 1.13.15,因此任何重大更改都是公平的游戏。

总之,我更好地理解了我的目标问题。

编辑:

我制作了一个插件ember-resolve-promise-helper来帮助从您的代码中抽象出这个问题。

于 2015-12-29T00:54:01.013 回答