我们正在使用带有嵌入子代的 hasMany 模型。这很好,所以每当我调用 model.get('children') 时,一切都正常。
我们现在已经将该 children 属性更改为 async:true,我似乎无法找到有关如何处理此问题的适当文档。
让我给你举个例子。为了简单起见,我将使用简化的 json 来表示我的 Ember 设置。
假设我有一个这样的模型:
model:{
hasMany: {children: {async: true} },
isActive: boolean
}
假设我有一个这样的模板:
{{#if lastChildIsActive}}
<p>I'm the last one!</p>
{{/if}}
我有一个控制器:
controller:{
lastChildIsActive: function(){
return this.get('model').get('children').get('lastObject').get('isActive')
}
}
好的,因此在使用 async: false 时使用此设置,一切正常。
但是现在,在 async 为真的情况下,控制器中对 .get('children') 的调用有时不会返回任何内容,因为我猜它是异步的。
现在我可以使用 Promise,并将我的控制器重构为:
controller:{
lastChildIsActive: function(){
this.get('model').get('children').then(function(children){
return children.get('lastObject').get('isActive');
});
}
}
第二个重构的问题是,我不再返回 isActive 值,而是返回 promise 对象。
但是模板不需要承诺,它需要返回值。