[ExtJS] store 数据状态 记录 dirty 和 crudState 使用

在使用ExtJS的grid控件时,常用到store 数据绑定。然后grid又是可以编辑的,如下:

[ExtJS] store 数据状态 记录 dirty 和 crudState 使用_第1张图片

想要是实现的场景:在整个表格编辑后,点击取消或关闭时,判断数据有无被更改过

对grid的更改,其实就是对store的更改,那我们只需查找store里的数据有无更改记录即可。

store里的数据,都是一个个数据集合collection,而collection有两个标记 可以判断此条数据是否变更过。

dirty

此配置属性描述此组件的已修改状态。只读

Defaults to:

false

若是组件或是数据对象被修改过 dirty就为true

cruState

该值最初为“R”或“C”,表示初始CRUD状态。当记录发生更改并通知各个加入方(stores, sessions, etc.)时,此值将在这些调用之前更新。换言之,在更新“crudstate”之后通知加入方。这意味着,如果在这些通知之外使用此状态,则“crudState”属性可能与基础更改短暂不同步。

  • "R" - 记录处于完全检索(未修改)状态。
  • "C" - 记录处于新创建(虚拟)状态。
  • "U" - 记录处于更新、修改(脏)状态。
  • "D" - 这项记录处于“删除”状态

Defaults to:

'R'

使用方法,用数据对象collection的集合items去遍历,然后查找行的dirty

Store对象.getData().items.map(
    (x)=>{ 
      if(x.dirty)
       return alert('有更改记录')
})

若是想实时监听store里的行数据有无变动,可以通过监听itemchange事件来实现

Store对象.getData().addListeners('itemchange', '方法名', 作用域)

 

你可能感兴趣的:(ExtJS,前端)