【问题标题】:Extjs 4 Store - disallow to add duplicates?Extjs 4 Store - 不允许添加重复项?
【发布时间】:2013-02-18 08:28:30
【问题描述】:

我的商店没有连接到任何服务器。该商店附加到网格,我在我的应用程序的各个地方添加记录。是否可以不允许添加已经存在的记录?我正在使用 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]);
                }
            }
        }
    }
});

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

还有我的模型定义:

Ext.define('GSIP_PLANY.grid.model.ParcelModel',{ 扩展:'Ext.data.Model', 字段:['id', 'name', 'tract', 'mapSheet', 'district', 'buildingNumber', 'streets', 'place'], idProperty:'名称' });

idProperty 不起作用,因为我可以添加任意数量的同名记录。有什么想法吗?

【问题讨论】:

    标签: extjs extjs4 extjs4.1


    【解决方案1】:

    Ext.data.StoresuspendEvents()resumeEvents() 方法(继承自Ext.util.Observable mixin),可以省略remove 事件的触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      相关资源
      最近更新 更多