我已经定义了一个具有许多不同属性的模型,但在我的后端创建记录时只需要其中一些属性。使用createRecord
仅使用少数属性创建新记录会使其余属性为null或“”,这会导致后端失败。
如何让Ember创建一个只包含我传递给createRecord
的属性的模型对象,或者,如何在将null属性发送到后端之前删除它们?
答案 0 :(得分:0)
说你正在使用$.ajax({
url: "http://localhost:8080/ajax_info.php",
dataType: "jsonp",
jsonp: 'jsoncallback',
success: function(data) {
alert(data);
},
error: function() {
$('#info').html('<p>An error has occurred</p>');
}
});
和RESTAdapter
。
RESTSerializer
现在您已为//model.js (serializer)
serializeIntoHashForCreate: function(data, type, record, options) {
let serialized = this.serialize(record, options);
delete serialized.unwanted_prop;
lodash.assignIn(data, serialized);
}
//model.js (adapter)
createRecord(store, type, record) {
var data = {};
var serializer = store.serializerFor(type.modelName);
serializer.serializeIntoHashForCreate(data, type, record, {includeId: false});
return this.ajax(this.buildURL(type.modelName), "POST", {data: data});
}
方法定制了适配器,createRecord
用于创建store