0

I am having trouble with Ext.data.ArrayStore. I have one defined as so:

var store = new Ext.data.ArrayStore({
    fields: [
        'myIdField',
        'myDataField'      
    ],
    idProperty: 'myIdField'
});

store.add(new store.recordType({
    myIdField: 'a',
    myDataField: 'SomeData'
}));

However, when I do

var myInsertedRecord = store.getById('a');

the value of myInsertedRecord is 'undefined'.

Am I misunderstanding how does the setting o the record id work?

4

2 回答 2

1

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.ArrayStore没有idProperty. 尝试创建一个模型,idProperty在模型中指定。使用该模型创建您的商店。

例子:

Ext.define('MyData', {
    extend: 'Ext.data.Model',
    fields: ['myIdField', 'myDataField'],
    idProperty: 'myIdField'
});


var store = Ext.create('Ext.data.ArrayStore', {
    model: 'MyData'
});

store.add({
    myIdField: 'a',
    myDataField: 'SomeData'
});


var myRecord = store.getById('a');
于 2014-07-03T09:53:11.123 回答
0

我知道这是一个旧线程,但无论如何我都会回答它......

问题是您创建新记录以添加到商店的方式。看看Ext.data.Record-static-method-create函数。您将看到它可以采用可选的 ID 参数。

因此,要使上述示例正常工作,您需要将记录添加到商店,如下所示:

store.add(new store.recordType({
    myIdField: 'a',
    myDataField: 'SomeData'}, 'a'));

请注意最后一个“a”,这是您将 ID 应用于记录的位置。

之后,您添加的记录将有一个 ID,因此store.getById('a')将为您工作。

于 2015-04-28T12:05:12.713 回答