我正在尝试将数组保证返回给我的模型,以便我可以在模板中循环遍历结果。我需要联系产品作为promise数组而不是promise对象返回。
型号:
App.ContactEditorRoute = Ember.Route.extend({
model: function (params) {
return Ember.RSVP.hash({
contact: this.store.find('contact', params.id),
/*need this to return array not an object which is currently does*/
contactproducts: this.store.find('contactproduct',params.id),
products: this.store.find('product')
})
}
模板:(使用标记标记)
each contactproduct in contactproducts
p
' quantity
contactproduct.quantity
' notes
contactproduct.note
答案 0 :(得分:1)
如果你真的希望它是一个数组,你的代码目前的结构方式,那么你可以做
contactproducts: this.store.find('contactproduct',params.id)
.then(product => [product])
当您想对find
的结果进行一些额外处理时,这是一种方法,但仍然会返回model
旨在执行的承诺。
然而,正如另一张海报所说,这可能不是你想要做的。如果联系人产品是联系人的hasMany
属性,则他们已经在那里(或者可能基于{async: true}
为您提取)。
如果联系人没有hasMany('contactproduct')
,那么您可能需要自己提取,但我怀疑联系人产品是否与联系人具有相同的ID。如果他们这样做,他们就不应该这样做。模型ID应该是唯一的。假设联系人产品的belongsTo
指向contact
,那么您希望这样做:
contactproducts: this.store.find('contactproduct', { contact: params.id })
将返回(承诺)数组。
但是,通常在这种情况下,将附加检索放在afterModel
钩子中会更好。这样可以让你model
保持干净整洁。