通过几种关系来获取来自ember-data的模型

时间:2014-02-04 21:42:50

标签: ember-data

我根据另一个菜单的选定值设置一个菜单的内容。第一个菜单是一组公司。公司有OrderProfile; OrderProfile有一个仓库。因此,基于已知的公司,我需要通过OrderProfile到达仓库。

当我将公司放在company变量中时,控制台中会发生什么:

company.get('orderProfile.warehouse.name') # Ember-data gets the OrderProfile but not the Warehouse
// => null
var op = company.get('orderProfile')
// => undefined # The OrderProfile assigned to the variable
var warehouse = op.get('warehouse')
// undefined # Now the Warehouse is assigned to the variable
warehouse.get('name')
// => "Warehouse 1" # This was null when we asked for company.orderProfile.warehouse.name

所以我知道我需要在几个步骤中解开这个问题,等待每个步骤完成。这样做是否有Ember成语?

N.B。这是使用:

DEBUG: Ember      : 1.5.0-beta.1+canary.13995621 index.js:3496
DEBUG: Ember Data : 1.0.0-beta.7+canary index.js:3496

1 个答案:

答案 0 :(得分:0)

以下是我们如何解决这个问题。我怀疑,关键是正确处理承诺,但我们还必须确保我们已经async: true设置相关关系。

warehouse = company.get("orderProfile.warehouse.name") # Doesn't work

# Instead, we need to treat orderProfile as a promise, and ask for the warehouse
# once it resolves:
company.get("orderProfile").then(
  (orderProfile) ->
    return orderProfile.get("warehouse") if orderProfile
).then(
  (warehouse) =>
    # Do something with the warehouse
)

据我所知,关系 - 特别是公司模型中的orderProfile: DS.belongsTo 'orderProfile', async: true - 需要async: true来提醒Ember-Data它可能还没有引用的模型,并且需要获取它们。我正在寻找承诺处理的正确轨道,但async: true部分是真正的关键。