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]);
                }
            }
        }
    }
});

上記のコードは、以前に挿入された類似のレコードがあるかどうかを確認し、存在する場合は新しいレコードを削除します。問題は、上記のコードで起動されるストアにアタッチされた削除イベント ハンドラーもあり、アプリの他の場所で (その名前に基づいて) レコードが削除されることです。すでに存在するレコードを保存したくないだけです。beforeadd イベントのようなものは素晴らしいですが、そのようなイベントはありません。

そして私のモデル定義:

    Ext.define('GSIP_PLANY.grid.model.ParcelModel',{
        拡張: 'Ext.data.Model',
        フィールド: ['id', 'name', 'tract', 'mapSheet', 'district', 'buildingNumber', 'streets', 'place'],
        idProperty:'名前'
    });

同じ名前のレコードを好きなだけ追加できるため、idProperty が機能していません。何か案は?

4

1 に答える 1

1

Ext.data.StoresuspendEvents()およびresumeEvents()メソッド ( Ext.util.Observablemixin から継承) を使用すると、イベントのトリガーを省略できますremove

于 2013-03-04T09:39:15.403 に答える