在我的应用程序的某个地方,服务器一次返回一堆记录。我在 Ember 中处理这个问题的方式是这样的:
$.each(json["foos"], function(idx, val){
DS.get('defaultStore').load(App.Foo, val)
});
它工作正常,除非涉及到关联。如果我有以下情况:
App.Dad = DS.Model.extend({
sons: DS.hasMany('App.Son')
})
App.Son = DS.Model.extend({
dad: DS.belongsTo('App.Dad')
})
如果在代码中我这样做:
$.each(json["dads"], function(idx, val){
DS.get('defaultStore').load(App.Dad, val)
});
$.each(json["sons"], function(idx, val){
DS.get('defaultStore').load(App.Son, val)
});
然后每个儿子“知道”它的爸爸(我可以a_son.get('dad')
),但爸爸不知道他们的儿子:a_dad.get('sons').get('length')
返回 0。
我想原因是当我加载一个爸爸时,他的儿子还没有加载。但是有没有办法让这个工作?
我可以像这样“手动”做到这一点:
$.each(json["sons"], function(idx, val){
DS.get('defaultStore').load(App.Son, val);
App.Dad.find(val.dad_id).get('sons').pushObject(App.Son.find(val.id));
});
但必须这样做似乎很奇怪。
我整理了一个 JSFiddle 来说明这一点:http: //jsfiddle.net/eq8pB/1/
谢谢!
PJ