我创建了一个函数来检查商店记录是否被更改,如果记录是脏的,那么当用户按下保存按钮setLoading
为真时,不是脏的然后什么都不做。
function isDirtyStore(theStore) {
var isDirty = false;
theStore.each(function(item){
if(item.dirty == true){
isDirty = true;
}
});
if (!isDirty){
isDirty = (theStore.removed.length > 0);
}
return isDirty;
};
var BtnRouteFareSave = Ext.getCmp('BtnRouteFareSave');
var grid = Ext.getCmp('MyGridPanelRouteFare');
BtnRouteFareSave.on('click', function(){
if (isDirtyStore(RouteFareStore)){
grid.setLoading(true);
}
})
但脏只检查编辑记录,如何将新记录插入商店?怎么检查?
答案 0 :(得分:4)
Ext.data.Store
对象具有getModifiedRecords()
方法,该方法返回自上次提交以来添加或更新的所有记录。
所以你不需要实现自己的函数,只需检查store.getModifiedRecords()
是否返回非空数组。
如果您还想检查是否已从商店中删除任何记录,您可以添加以检查store.getRemovedRecords( )
。此方法返回已从存储中删除但尚未在代理上销毁的所有记录。
答案 1 :(得分:0)
有点奇怪,但你可以在你的商店中添加一个监听器来监听添加新的记录,并在该监听器内设置特定的记录脏,以便能够在验证中检测到它。
最好的问候。
答案 2 :(得分:0)
您可以创建包含原始项目的商店实例,并将其与新实例进行比较,该实例包含第一个项目的所有项目,加上新插入的项目并比较两者或使用{{ 3}}和add
事件。
如果触发了add
事件,则标记一个布尔值,该布尔值表示您的商店有新数据,因此有新的脏记录。