不能相信这么简单的东西是给我这么多格雷夫!无论如何,我有两个模型:灰烬数据,没有的hasMany更新
App.Basket = DS.Model.extend({
fruits: DS.hasMany('App.Fruit')
});
App.Fruit = DS.Model.extend({
basket: DS.belongsTo('App.Basket')
});
我拿一个ID为1的篮子,并没有指定任何fruit_ids。然后,我拿一个basket_id为1的水果。fruit.get('basket')
返回篮子就好了。但是,basket.get('fruits')
是空的,它从不更新。
在篮下JSON指定fruit_ids不如在实际应用实际篮子可能有数千至数百万的水果,用户将不会需要来接他们所有可接受的解决方案。
我已经尝试添加上App.Fruit
如下:
didLoad: function() {
this.get('basket').get('fruits').pushObject(this);
}
这对于第一负载正常工作。但是,如果烬数据再次尝试获取数据,那么你只得到:
Uncaught Error: Attempted to handle event `loadedData` on <App.Fruit:ember353:3> while in state rootState.loaded.updated.uncommitted. Called with undefined
更改didLoad
到:
didLoad: function() {
this.get('basket').get('fruits').pushObject(this);
this.get('stateManager').send('becameClean');
this.get('stateManager').send('finishedMaterializing');
}
删除所有错误。但是,即使当ember尝试重新获取数据(例如,在访问另一条路线并返回之后),didLoad也不会再次被调用。
花在这个了好几个小时,我不明白这么简单的东西是如何采取了这么多我的时间。所有我想要做的事情都是在获取新果子时更新篮子上的hasMany!