Ember 更新导致模板中的承诺不等待解析
Ember update causes promises in templates to not wait to resolve
我正在进行 ember 1.12.1 -> 1.13.11 和 ember 数据 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);
});
});
}
}))
让它恢复到更新前的状态。
有人知道这是为什么吗?似乎模板在更新后停止解析承诺。
交联 https://github.com/emberjs/ember.js/issues/12732
因此,经过一些挖掘和重现 http://emberjs.jsbin.com/ququdenari/edit?html,js,output,我无法在 1.12.1 中仅使用 promises 获得初始工作案例。这让我相信这可能是 ember-data 建立关系承诺的方式,并且自从我从 1.0.0-beta.19.1 更新到 1.13.15 以来,任何重大变化都是公平的游戏。
总之,我更好地理解了我的目标。
编辑:
我做了一个插件 ember-resolve-promise-helper 来帮助从您的代码中抽象出这个问题。
我正在进行 ember 1.12.1 -> 1.13.11 和 ember 数据 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);
});
});
}
}))
让它恢复到更新前的状态。
有人知道这是为什么吗?似乎模板在更新后停止解析承诺。
交联 https://github.com/emberjs/ember.js/issues/12732
因此,经过一些挖掘和重现 http://emberjs.jsbin.com/ququdenari/edit?html,js,output,我无法在 1.12.1 中仅使用 promises 获得初始工作案例。这让我相信这可能是 ember-data 建立关系承诺的方式,并且自从我从 1.0.0-beta.19.1 更新到 1.13.15 以来,任何重大变化都是公平的游戏。
总之,我更好地理解了我的目标。
编辑:
我做了一个插件 ember-resolve-promise-helper 来帮助从您的代码中抽象出这个问题。