我使用的是Ember Data 1.0.0 beta 1.我转而使用了beta 2(刚刚发布)。
似乎模型序列化器(我将id标准化)不再起作用。
我的印象是normalize中的param顺序从type,prop,hash更改为type,hash,prop。
这是迁移指南建议的内容:
normalize: function (type, property, hash) {
// normalize the `_id`
var json = { id: hash._id };
delete hash._id;
// normalize the underscored properties
for (var prop in hash) {
json[prop.camelize()] = hash[prop];
}
// delegate to any type-specific normalizations
return this._super(type, property, json);
}
现在,测试版2中的参数顺序为(类型,哈希,属性)。因此,规范化的模型在beta 2版本中不包含id。
如果我将params切换为type,hash,property,则id会被填充,但此时所有其他属性都会变为ampty。
因此看起来你不能再使用normalize来规范化id和任何强调的属性。
答案 0 :(得分:1)
在Transition文档中有一个normalize函数的修订版本(稍微强一些)。
https://github.com/emberjs/data/blob/master/TRANSITION.md#underscored-keys-_id-and-_ids
App.ApplicationSerializer = DS.RESTSerializer.extend({
normalize: function(type, hash, property) {
var normalized = {}, normalizedProp;
for (var prop in hash) {
if (prop.substr(-3) === '_id') {
// belongsTo relationships
normalizedProp = prop.slice(0, -3);
} else if (prop.substr(-4) === '_ids') {
// hasMany relationship
normalizedProp = Ember.String.pluralize(prop.slice(0, -4));
} else {
// regualarAttribute
normalizedProp = prop;
}
normalizedProp = Ember.String.camelize(normalizedProp);
normalized[normalizedProp] = hash[prop];
}
return this._super(type, normalized, property);
}
});
如果您只使用normalize: function(...
切换订单,您将获得空白参数。您还必须在return this._super(...
行上进行切换。