【问题标题】:Saving a model breaks one to many relationships保存模型会破坏一对多关系
【发布时间】:2014-08-09 04:48:36
【问题描述】:

当我保存一个父对象(它有很多子对象)时,这种关系似乎被打破了。 Ember docs 对此问题保持沉默。

我需要做什么才能让父对象仍然显示子对象?

运行此操作时,我希望父名称将从“Taylor”更改为“Matt”,而子名称“Ben”将保持不变并保留在页面上。目前,该操作会从父级中移除子级。

saveParent: function() {
  this.store.find('parent', 1).then(function (parent) {
    parent.set('name', 'Matt');
    parent.save();
    });
}

jsbin 示例:http://jsbin.com/zodorule/8/

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    这是 JSONSerializer 和 hasMany 关系的问题。你可以检查这个“固定”的 jsbin:http://jsbin.com/zodorule/13

    参考本期:http://discuss.emberjs.com/t/ember-data-fixture-adapter-saving-record-loses-has-many-relationships/2821

    我将此添加到您的代码中,并且可以正常工作:

    DS.JSONSerializer.reopen({
        serializeHasMany : function(record, json, relationship) {
            var key = relationship.key;
    
            var relationshipType = DS.RelationshipChange.determineRelationshipType(
                    record.constructor, relationship);
    
            if (relationshipType === 'manyToNone'
                    || relationshipType === 'manyToMany'
                    || relationshipType === 'manyToOne') {
                json[key] = Ember.get(record, key).mapBy('id');
                // TODO support for polymorphic manyToNone and manyToMany
                // relationships
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多