Extjs 存储同步:许多删除,一些失败
我有一个存储,用户可以通过一次Extjs 存储同步:许多删除,一些失败,extjs,Extjs,我有一个存储,用户可以通过一次destroy操作删除多个记录 现在,其中一些记录被锁定在数据库中(因为其他人正在处理这些记录),因此无法删除。服务器如何告知前端Id为a、b、c的记录删除成功,但Id为x、y、z的记录无法删除,应移回存储区并显示在网格中 在sync()之后,ExtJS存储应该知道哪些记录在服务器端被真正删除了,哪些没有被删除。我认为这个问题没有简单的解决方案。我选择了以下解决方法: 记录现在有一个默认设置为false的“IsDeleted”标志: fields:[{ ..
destroy
操作删除多个记录
现在,其中一些记录被锁定在数据库中(因为其他人正在处理这些记录),因此无法删除。服务器如何告知前端Id为a、b、c的记录删除成功,但Id为x、y、z的记录无法删除,应移回存储区并显示在网格中
在
sync()
之后,ExtJS存储应该知道哪些记录在服务器端被真正删除了,哪些没有被删除。我认为这个问题没有简单的解决方案。我选择了以下解决方法:
记录现在有一个默认设置为false
的“IsDeleted”标志:
fields:[{
...
},{
name: 'IsDeleted'
type: 'bool',
defaultValue: false
存储区有一个过滤器,用于隐藏标记设置为true
的条目:
filters:[{
property:'IsDeleted',
value:false
}]
当用户选择删除时,我不会从存储中删除条目,而是将这些条目的IsDeleted
标志设置为true
。过滤器使用户认为条目已被删除
当存储同步时,它执行
更新
操作,而不是销毁
操作。因此,API的更新端点必须删除IsDeleted
作为true
传输的所有条目。如果无法从数据库中删除条目,则返回给客户机的相应json将被IsDeleted
设置为false
,以便前端知道删除该条目失败。您的商店是由ajax驱动的吗?表示每次调用ajax请求更新自身时?@Alexander在同步中,您可以使用paramsstore.sync({callback:function(records,operation,success){},success:function(batch,options){},failure:function(batch,options){})代码>我不确定,但可能有什么。