我为服务器配置了一个代理POST
数据的商店。我动态地向这个商店添加记录。在商店上调用sync()
方法后,数据将被发送到服务器。但是看看网络流量,我看到整个记录数据都被发送了。如何将商店配置为仅发送单个数据(仅限于记录的ID)?
我尝试在连接到代理的JSON写入器上将WriteAllFields
属性设置为false,但这没有帮助
我也尝试过这种方法:Ext.JS Prevent Proxy from sending extra fields但请求甚至没有执行
var documentStore = Ext.getStore('Document');
var trashStore = Ext.getStore('TrashDocuments');
documentStore.each (function(record) {
console.debug(record);
//record.phantom = true;
//record.setDirty();
trashStore.add(record);
documentStore.remove(record);
});
var newWriter = Ext.create('Ext.data.writer.Json',{
getRecordData: function(record){
return {'id':record.data.id};
}
});
trashStore.getProxy().setWritter(newWritter);
trashStore.sync({
success: function()
{
console.debug("success!!");
},
failure: function()
{
console.debug("failed...");
},
callback: function()
{
console.debug("calling callback");
},
scope: this
});
console.debug("END");
答案 0 :(得分:1)
writeAllFields
配置不起作用,因为这仅对非幻像记录有意义;幻影(新)记录的任何字段都将被视为"已更改"因此包含在请求包中。
要排除包含在请求中的特定字段,请将 persist:false 添加到您不想包含的字段中。
话虽如此,我不太明白为什么你只想写一个新增记录的ID。除非你明确让Ext JS为你创建这些id,你实际上要发送给服务器的是什么?我不知道您的用例,但通常需要让您的持久层(例如数据库)为您的记录分配标识符。