EXT JS检查是否有任何新记录插入Store

时间:2013-12-14 15:12:05

标签: extjs

我创建了一个函数来检查商店记录是否被更改,如果记录是脏的,那么当用户按下保存按钮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);  
}
})

但脏只检查编辑记录,如何将新记录插入商店?怎么检查?

3 个答案:

答案 0 :(得分:4)

Ext.data.Store对象具有getModifiedRecords()方法,该方法返回自上次提交以来添加或更新的所有记录。

所以你不需要实现自己的函数,只需检查store.getModifiedRecords()是否返回非空数组。

如果您还想检查是否已从商店中删除任何记录,您可以添加以检查store.getRemovedRecords( )。此方法返回已从存储中删除但尚未在代理上销毁的所有记录。

答案 1 :(得分:0)

有点奇怪,但你可以在你的商店中添加一个监听器来监听添加新的记录,并在该监听器内设置特定的记录脏,以便能够在验证中检测到它。

最好的问候。

答案 2 :(得分:0)

您可以创建包含原始项目的商店实例,并将其与新实例进行比较,该实例包含第一个项目的所有项目,加上新插入的项目并比较两者或使用{{ 3}}和add事件。

如果触发了add事件,则标记一个布尔值,该布尔值表示您的商店有新数据,因此有新的脏记录。