0

我有以下问题:

带有用于选择帖子类别的选择字段的表单。假设帖子的类别为 100。在 Ember 检查器中,显示如下:

category: <App.Category:ember708:100>

当我保存帖子时(通过 Ember Data 1.0.0 beta 2),类别突然变为:

category: 100

并且该值不再在选择列表中被选中。它被清除了。

要保存的代码:

    post.save().then(
            function () {
              alert("Save OK");
            }
    )

任何我需要搜索的方向的想法......如果我转换到另一个页面然后返回编辑屏幕,这些值都是正确的。因此模型中的数据仍然是正确的......

4

3 回答 3

3

获取最新的金丝雀版本,这将解决belongsTo问题,但是因为hasMany我尝试修改 ember-data 的代码,并且到目前为止有效,

将第 167 行更改为

if (relationshipType === 'manyToNone' 
 || relationshipType === 'manyToMany' 
 || relationshipType === 'manyToOne') 

更新

更好的解决方案是序列化程序中的覆盖serializeHasMany方法。

感谢@wycats(根据 github #1273上的讨论)

就像是

Deific.AppacitiveRESTSerializer = DS.RESTSerializer.extend({
    //primary key is '__id' in appacitive, overriding default behaviour
    primaryKey: '__id',

    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] = record.get(key).mapBy('id');
        // TODO support for polymorphic manyToNone and manyToMany relationships
        }
    }
});

Deific.Store = DS.Store.extend({
    revision: 12,
    adapter: DS.RESTAdapter.extend({
        namespace: 'service',
        defaultSerializer: 'Deific/appacitiveREST'
    }),
});

暂时可以用这个。希望这可以帮助。

于 2013-09-11T10:58:39.033 回答
0

看起来这应该现在修复。 https://github.com/emberjs/data/pull/1257

于 2013-09-10T14:53:10.863 回答
0

看起来像 Ember Data 中的一个错误:https ://github.com/emberjs/data/issues/1228

于 2013-09-09T17:41:45.373 回答