我有以下问题:
带有选择字段的表单,用于选择帖子的类别。假设帖子有100类。在Ember检查器中,显示如下:
category: <App.Category:ember708:100>
当我保存帖子时(通过Ember Data 1.0.0 beta 2),该类别突然变为:
category: 100
并且在选择列表中不再选择该值。它被清除了。
保存代码:
post.save().then(
function () {
alert("Save OK");
}
)
我想知道我需要搜索哪个方向...如果我转换到另一个页面然后返回编辑屏幕,则值都是正确的。因此,数据在模型中仍然是正确的......
答案 0 :(得分:3)
获取最新的canary build,这将解决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'
}),
});
暂时可以使用。希望这会有所帮助。
答案 1 :(得分:0)
看起来像是Ember数据中的错误:https://github.com/emberjs/data/issues/1228
答案 2 :(得分:0)
现在看来应该修复此问题。 https://github.com/emberjs/data/pull/1257