需要 ember 模型到 return 数组 promise not object

Need ember model to return array promise not object

我正在尝试 return 我的模型的数组承诺,以便我可以在我的模板中循环遍历结果。我需要 return 的联系产品作为承诺数组而不是承诺对象。

型号:

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

如果您真的希望它成为一个数组,并具有当前代码结构的方式,那么您可以这样做

contactproducts: this.store.find('contactproduct',params.id)
    .then(product => [product])

当您想对 find 的结果进行一些额外处理时,可以采用这种方法,但仍然 return model 旨在实现的承诺。

但是,正如另一位发帖人指出的那样,这可能不是您想要做的。如果联系人产品是 hasMany 属性 个联系人,那么它们已经存在(或者可能根据 {async: true} 为您获取)。

如果contacts没有hasMany('contactproduct'),那么你可能需要自己去获取,但是我怀疑contact产品是否和contacts有相同的id。如果他们这样做,他们不应该这样做。模型 ID 应该是唯一的。假设联系人产品有一个 belongsTo 指向 contact 那么你想这样做:

contactproducts: this.store.find('contactproduct', { contact: params.id })

其中 return 一个数组的(承诺)。

但是,通常在这种情况下,最好将附加检索放在 afterModel 挂钩中。这样可以让您的 model 干净整洁。