Extjs 根据自动同步插入操作的响应进行操作
我有一个商店有Extjs 根据自动同步插入操作的响应进行操作,extjs,extjs4,sync,extjs4.2,Extjs,Extjs4,Sync,Extjs4.2,我有一个商店有autosync:true 加载商店时,我会得到完整的模型: [{"id":11,"active":true,"name":"ABC","sens":7,"details":119,"type":13,"acl":false,"create":true,"delete":true,"owner":"alexander","members":"gustave\njerome"}] 将新模型同步到服务器时,我会将其与“id”:0一起发送,以便服务器知道它必须创建一个新模型。然后服务器
autosync:true
加载商店时,我会得到完整的模型:
[{"id":11,"active":true,"name":"ABC","sens":7,"details":119,"type":13,"acl":false,"create":true,"delete":true,"owner":"alexander","members":"gustave\njerome"}]
将新模型同步到服务器时,我会将其与“id”:0一起发送,以便服务器知道它必须创建一个新模型。然后服务器将响应{“success”:true,“data:[12],“debug:[]}
,其中12
是新创建的条目的id
现在,我必须为自动同步操作添加一个回调函数,以便将收到的ID修补回存储区
如果我手动同步,这将很容易:
Ext.getStore("RightsStore").sync({
success:function() {
}
})
但是,如何才能获得特殊的成功或回调函数,以便将同步插入到使用autoSync的存储中?如果服务器发送了{“success”:true,“data”[{“id”:12,…..}}}
,则无需执行任何操作。最好的方法是,若服务器返回它为CRUD操作收到的完整记录以及更新的数据(以相同的顺序)。Ext负责剩下的部分。如果您无法像@Saki所提到的那样更改服务器输出,您只需侦听load事件并使用新id更新记录即可
store.on('load', me.loaded, me);
loaded: function(store, records) {
}
更多详情请点击此处-顺便说一句,您可以在此处看到所有CRUD操作: