createRecord,然后将belongsTo结果设置为Transaction Error

时间:2014-11-26 21:36:59

标签: ember.js ember-data

将我的应用程序升级到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适配器。

非常感谢提前。

0 个答案:

没有答案