使用Store.pushPayload预加载记录不会保留hasMany关系

时间:2014-01-10 12:37:32

标签: ember.js ember-data

我正在使用DS.Store的“pushPayload”方法在我的应用程序启动时预加载一些记录。

有效负载处于正确的“规范化”形式:

示例:

{"provinces":[
    {"id":1,"name":"Ontario","city_ids":[1,2,3]}
], 
"cities":[
    {"id":1,"name":"Toronto","slug":"toronto"},
    {"id":2,"name":"Hamilton","slug":"hamilton"},
    {"id":3,"name":"Waterloo","slug":"waterloo"}
]}

Chrome的Ember Inspector告诉我,我的省和城市都已加载,因为它们显示了数据标签。

但是,在我的某个省份对象上执行像province.get('cities')之类的操作会返回一个空的DS.ManyArray。

这让我相信,虽然城市已被加载,但他们的引用并未正确连接,或需要刷新。我怎样才能确保这种情况发生,各省都有对各自城市的引用(反之亦然)?当然,我在模型文件中设置了正确的DS.hasMany和DS.belongsTo关系。

编辑:因此,虽然我可以访问“hasMany”方面的关系,但“belongsTo”方面没有填充,并且为空。嗯...

1 个答案:

答案 0 :(得分:2)

D'哦!事实证明我无法使用CoffeeScript“for / in”循环迭代关系,因为它不是普通数组。

使用“forEach”方法迭代工作;数据一直存在,我只是不知道如何去做...