将我的应用程序升级到Ember 1.8.1
和Ember Data 1.0.0-beta.11
后,在尝试在两个模型之间设置belongsTo
关系时出现了一个非常奇怪的错误:
Attempted to handle event didCommit on <***@model:order::**:**> while in state root.loaded.updated.uncommitted.
当我创建order
时,会尝试将当前bag
分配给该订单。这是order
控制器中的相关代码:
assignBag: function() {
var newOrder = this.get('model');
var shoppingBag = this.get('bag').objectAt('0');
newOrder.set('bag', shoppingBag);
this.get("controllers.order").send('saveOrder', newOrder);
this.send('fireViewedCheckoutSegmentEvent');
}.on('init'),
有问题的行是newOrder.set('bag', shoppingBag);
。根据错误的性质,您会认为这是因为新创建的order
未在数据库中持久存在。但是从路线中的代码中可以清楚地看到,在控制器中设置model
之前保存了订单:
以下是order
路线:
var OrderRoute = Ember.Route.extend(ResetScrollMixin, {
model: function() {
return this.store.find('order');
},
afterModel: function(model) {
if (model.get('length') < 1) {
model = this.store.createRecord('order');
}
},
setupController: function(controller, model) {
var order = model.objectAt('0');
order.save().then(function(savedOrder) {
controller.set('model', savedOrder);
});
}
});
如果有帮助,请参阅以下两个模型的代码:
订单:
import DS from 'ember-data';
export default DS.Model.extend({
bag: DS.belongsTo('bag', {async: true}),
});
袋:
import DS from 'ember-data';
export default DS.Model.extend({
order: DS.belongsTo('order'),
});
我已经在墙上撞了好几天了。有没有人知道发生了什么?我错误地设置了belongsTo
关系吗?订单和包模型都使用LocalStorage适配器。
非常感谢提前。