del*_*wyn 15 ember.js ember-data
我在使用Ember Data Fixture Adapter时遇到了问题.保存记录时,所有记录的所有关联都将丢失.我创建了一个简单的JS Bin来说明这个问题:http://jsbin.com/aqiHUc/42/edit
如果您编辑任何用户并保存,则所有项目都会消失.
这是使用Ember 1.0.0和最新的Ember Data canary版本.
我不确定我做错了什么,或者这是否与Ember Data有关.
谢谢
del*_*wyn 10
为了回答我的问题,DS.JSONSerializer.serializeHasMany似乎只处理和序列化manyToNone和manyToMany关系类型.您可以通过为模型使用自定义序列化程序来覆盖此行为:
var get = Ember.get;
App.UserSerializer = DS.RESTSerializer.extend({
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] = get(record, key).mapBy('id');
}
}
});
Run Code Online (Sandbox Code Playgroud)
仍然不太确定这是否是一个错误,或者这是否是期望/预期的行为.
我遇到了同样的问题并找到了同样的解决方案.当然这是ember-data中的一个错误?
这是我的解决方案,唯一的区别是我正在修改JSONSerializer,而不是扩展RESTSerializer因为我正在使用本地存储适配器:
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
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3618 次 |
| 最近记录: |