Sencha Touch根据条件删除商店中的记录

时间:2013-09-12 15:20:32

标签: sencha-touch

我有一个包含以下代码的商店。我的商店里有7条记录,其中前三条记录的状态为2,其他记录的状态为3.我想删除状态为2的记录。我该怎么办

Ext.define('MyApp.store.MyStore', {
  extend: 'Ext.data.Store',

  config: {
    data: [
        [
            1,
            'Siesta by the Ocean',
            '1 Ocean Front, Happy Island',
            1
        ],
        [
            2,
            'Gulfwind',
            '25 Ocean Front, Happy Island',
            1
        ],
        [
            3,
            'South Pole View',
            '1 Southernmost Point, Antarctica',
            1
        ],
        [
            4,
            'ABC',
            '11 Address1',
            2
        ],
        [
            5,
            'DEF',
            '12 Address2',
            2
        ],
        [
            6,
            'GHI',
            '13 Address3',
            2
        ],
        [
            7,
            'JKL',
            '14 Address4',
            2
        ]
    ],
    storeId: 'MyStore',
    fields: [
        {
            name: 'id',
            type: 'int'
        },
        {
            name: 'name',
            type: 'string'
        },
        {
            name: 'address',
            type: 'string'
        },
        {
            name: 'status',
            type: 'int'
        }
    ],
    proxy: {
        type: 'localstorage'
    }
  }
});

2 个答案:

答案 0 :(得分:2)

您必须调用商店的remove()方法,传递要删除的记录。因此,调用each()方法遍历商店,检查记录的status并删除它,如果它等于2:

Ext.getStore('MyStore').each(function(record) {
    if (record.get('status') === 2) {
        Ext.getStore('MyStore').remove(record);
    }
}, this);

答案 1 :(得分:0)

这样你只需要调用一次删除:

var store = Ext.getStore('MyStore');
var records2del = [];
store.each(function(record) {
    if (record.data.status == 2) {
        records2del.push(record);
    }
}, this);
store.remove(records2del);