今天遇到一个很奇怪的问题,form新增一条记录后,产生一个model,然后加到store中提交
var model = Ext.create('Model‘, form.getForm().getValues());
grid.store.add(model);
grid.store.sync();
store.sync()怎么样都不执行,看了例子都是对的,后来查了不少东西总算明白了原来是
model.phantom 这个属性,要设置为true,表示此数据在服务器上没有,只在客户端有,那么为什么新建的model的
model.phantom 为false呢,是因为新增的时候如果 model.idProperty 设置的字段如果有值的话,ext 就认为这条数据
在服务器端已经有了,就不会去更新了。
但是idProperty 不设置又会有新的问题 即是grid 选中了一条,在刷新过后,选中的那么会失去选中状态。
最终解决办法,
var model = Ext.create('Model‘, form.getForm().getValues())
model.phantom =true;
form.modulegrid.store.add(model);
form.modulegrid.store.sync();
这样就解决问题了,因此设计数据库的时候最好用一个自增量字段作为主键,就无此问题,但是有些主键是要自己定义的,就会产生这个问题
本文介绍在使用ExtJS框架时如何正确处理新增数据的同步问题,特别是在设置model的phantom属性来确保服务器能识别新记录的过程中遇到的问题及解决方案。

679

被折叠的 条评论
为什么被折叠?



