我在使用Ext.data.ArrayStore时遇到问题。我有一个定义如下:
var store = new Ext.data.ArrayStore({
fields: [
'myIdField',
'myDataField'
],
idProperty: 'myIdField'
});
store.add(new store.recordType({
myIdField: 'a',
myDataField: 'SomeData'
}));
但是,当我这样做时
var myInsertedRecord = store.getById('a');
myInsertedRecord的值为'undefined'。
我是否误解了记录ID的设置是如何工作的?
答案 0 :(得分:0)
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');
答案 1 :(得分:0)
我知道这是一个老话题,但无论如何我都会回答......
问题在于您创建要添加到商店的新记录的方式。看看Ext.data.Record-static-method-create功能。您将看到它可以采用可选的ID参数。
因此,为了使您的上述示例有效,您需要将记录添加到商店,如下所示:
store.add(new store.recordType({
myIdField: 'a',
myDataField: 'SomeData'}, 'a'));
注意最后一个'a',即将ID应用于记录的位置。
之后,您添加的记录会显示一个ID,因此store.getById('a')
将对您有效。