我有一个网格面板,当我离开页面时,我想要检查商店中是否有任何项目(或迭代模型/记录)以检查是否有任何未保存的更改/添加.
我最初尝试使用panel.getStore().getNewRecords()新记录,但它返回当前分页的每个记录.panel.getStore().getUpdatedRecords()似乎忽略记录,尽管网格中的每个单元格中都有一个小的红色三角形.
那么,任何人都可以建议正确的方法来检查商店中是否存在任何新的或更新的记录?
b3v*_*abs 19
这可能对你有用.
var records = store.getRange();
for (var i = 0; i < records.length; i++) {
var rec = records[i];
if (rec.dirty == true) {
//Save data
}
}
Run Code Online (Sandbox Code Playgroud)
jst*_*ker 12
为了保持封装脏检查逻辑,我选择向对象添加一个isDirty()方法Ext.data.Store.我使用了相同的逻辑AbstractStore.sync()来确定商店是否需要同步.
Ext.define(null, {
override: "Ext.data.Store",
isDirty: function() {
return (this.getNewRecords().length > 0 || this.getUpdatedRecords().length > 0 || this.getRemovedRecords().length > 0);
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用ExtJS 4.2.1.如果您在致电时返回了所有记录,getNewRecords()则应检查是否已为idProperty模型设置了值.
您可以使用类似下面的代码:
if(panel.getStore().getModifiedRecords().length > 0) {
console.log('store has dirty records');
}
Run Code Online (Sandbox Code Playgroud)