我正在进行成员1.12.1->1.13.11和成员数据1.0.0-beta->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);
});
});
}
}))
让它恢复到更新前的工作状态。
有人知道为什么会这样吗?更新后,模板似乎停止了解析promise。
交联https://github.com/emberjs/ember.js/issues/12732
所以经过一番挖掘和一番谴责http://emberjs.jsbin.com/ququdenari/edit?html,js,output,我无法在1.12.1中获得仅使用promise的初始工作情况。这让我相信,这可能是余烬数据建立关系承诺的方式,由于我从1.0.0-beta 19.1更新到1.13.15,任何突破性的变化都是公平的。
总之,我更了解这个问题,这是我的目标。
编辑:
我做了一个插件ember resolve promise helper来帮助从您的代码中抽象出这个问题。