Это ничего не изменит:
store: 'cteo',
Вам необходимо передать указанную ранее ссылку на объект, а не строку:
store: cteo,
В качестве альтернативы, вы можете вызвать Ext.StoreMgr.lookup('cteo')
, но, судя по вашему коду, я предполагаю, что ссылка на переменную была вашим намерением.
Один комментарий к вашему коду.Выполнение этого:
cteo = Ext.extend(Ext.data.XmlStore, {
...
cteo();
... немного странно и, скорее всего, создает глобальную переменную в области видимости окна (при условии, что cteo не определен как var где-то ранее).Думайте об этом как об определении пользовательского класса, а затем о создании нового экземпляра класса, который вы определили.Кроме того, подумайте о своем наименовании - подкласс магазина должен быть определенным типом магазина, который должен быть очевиден в названии.Как правило, ваш код должен выглядеть примерно так:
Ext.ns('MyNamespace');
MyNamespace.CteoStore = Ext.extend(Ext.data.XmlStore, {
...
});
var cteoStore = new CteoStore();
Ах да, еще одна вещь.Вам не нужно переопределять конструктор с единственной целью предоставления конфигураций по умолчанию.Просто сделайте это:
MyNamespace.CteoStore = Ext.extend(Ext.data.XmlStore, {
storeId: 'cteo',
url: 'cteo.xml',
record: 'account',
data: '',
fields: [
{
name: 'name',
mapping: 'name'
},
{
name: 'id',
mapping: 'name'
}
]
});
Это также более полезно, поскольку эти конфиги можно переопределить, в отличие от вашего примера.Это делает его более пригодным для повторного использования (например, если вы когда-нибудь хотели назначить другой идентификатор другому экземпляру).