Extjs 4商店 - 不允许添加重复项?

时间:2013-03-04 09:33:48

标签: extjs extjs4 extjs4.1

我的商店没有连接到任何服务器。商店附加到网格,我在我的应用程序的不同位置添加记录。有可能不允许添加已经存在的记录吗?我正在使用idProperty,但它不工作(可能是因为存储没有连接到服务器?)。我已经有了这样的事情:

Ext.define('GSIP_PLANY.grid.store.ParcelStore',{
    extend: 'Ext.data.Store',
    model: 'GSIP_PLANY.grid.model.ParcelModel',
    listeners:{
        add:function(store, records, index, eOpts) {        
            for (var i in records) {
                var idx = store.findExact('name', records[i].get('name'));
                if ( idx != -1 && idx < index) {
                    store.remove(records[i]);
                }
            }
        }
    }
});

Ext.define('GSIP_PLANY.grid.store.ParcelStore',{ extend: 'Ext.data.Store', model: 'GSIP_PLANY.grid.model.ParcelModel', listeners:{ add:function(store, records, index, eOpts) { for (var i in records) { var idx = store.findExact('name', records[i].get('name')); if ( idx != -1 && idx < index) { store.remove(records[i]); } } } } });

上面的代码检查是否有先前插入的类似记录,如果是,则删除新记录。问题是我还删除了附加到商店的事件处理程序,它们在上面的代码中触发,导致在我的应用程序的其他位置删除记录(基于其名称)。我只是想不存储已经存在的记录。像之前的事情会很棒,但没有这样的事件。

我的模型定义:


    Ext.define('GSIP_PLANY.grid.model.ParcelModel',{
        extend: 'Ext.data.Model',
        fields: ['id', 'name', 'tract', 'mapSheet', 'district', 'buildingNumber', 'streets', 'place'],
        idProperty:'name'
    });

idProperty无法正常工作,因为我可以添加尽可能多的具有相同名称的记录。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Ext.data.Store包含suspendEvents()resumeEvents()方法(继承自Ext.util.Observable mixin),可让您省略remove事件的触发。