1
我在一個燼器1.12.1 - > 1.13.11和燼器數據1.0.0-beta.19.1 - > 1.13.15更新中。我以前有一個模板:Ember更新導致模板中的承諾不會等待解決
{{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);
});
});
}
}))
使其恢復到更新之前的狀態。
有誰知道這是爲什麼?看起來模板停止解決更新後的承諾。
我的賭注是關於未記錄的行爲我不認爲第一個版本應該永遠不會工作,因爲你將承諾傳遞給組件,並且你沒有在模板中使用它,所以它不會等待它解決以便它能夠兌現承諾。 也可能沒有關係,但我的建議是將所有承諾處理的東西放在控制器/路由(或組件)中,{{a-component}}所在的位置。因此,'a-component'已經得到了解決的價值,而不是承諾。可能會讓你的生活更輕鬆。 – Piotr
我非常同意這段代碼需要重構。所以如果我在模板中有其他的東西,例如'{{b-component child = model.parent.child}}',它可能會作爲其他組件的副作用? –
它可能工作,不知道:)我根本沒有真正依賴這種行爲,而是optet來處理路由器或父組件中的承諾,但是如果您可以回發的話,您可以試試它會對結果感興趣。 – Piotr