Я использую ExtJS 4.0.7 со своей стандартной архитектурой MVC. У меня есть сетка с пользовательскими классами store
и model
. Данные загружаются удаленно через store.load()
. Я использую ext-dev.js
для целей отладки с динамической загрузкой зависимостей.ExtJS 4 (MVC) Store не использует мой собственный класс модели
Приложение загружается нормально, без ошибок в консоли Chrome. Но проблема в том, что записи в моем магазине имеют точно такие же данные, как и мой вызов AJAX, независимо от того, какие поля у меня есть в моей модели. Я даже попытался переименовать и удалить поля, но Ext не обращает внимания.
Просмотр моего объекта store
с использованием консоли показывает, что все записи имеют собственный собственный класс классов, созданный по умолчанию, с именем Ext.data.reader.Json-Modelext-gen1141
. Вот суть моего кода:
Моя модель:
Ext.define('MyApp.model.FooModel', {
extend: 'Ext.data.Model',
idProperty: 'column1',
fields: [
{name: 'column1', convert: function(value, record) {
return value + ' TEST-TEST-TEST';
}},
'column2',
'column3'
]
});
Мой магазин:
Ext.define('MyApp.store.FooStore', {
extend: 'Ext.data.Store',
model: 'MyApp.model.FooModel',
autoLoad: false,
proxy: {
type: 'ajax',
url: '/blah/blah',
reader: {
type: 'json'
}
}
});
Моя сетка:
Ext.define('MyApp.view.FooGrid', {
extend: 'Ext.grid.Panel',
alias: 'fooGrid',
store: 'FooStore',
columns: [{
text: 'Column 1',
dataIndex: 'column1',
flex: 1
},{
text: 'Column 2',
dataIndex: 'column2',
flex: 1
},{
text: 'Column 3',
dataIndex: 'column3',
flex: 1
}]
});
Мой контроллер:
Ext.define('MyApp.controller.Foo', {
extend: 'Ext.app.Controller',
views: ['FooGridFrame'],
models: ['FooModel'],
stores: ['FooStore'],
init: function() {
this.control({
'fooGrid': {
activate: function(grid) {
grid.getStore().load();
}
}
});
}
});
Я не могу сказать, что я делаю неправильно. Есть идеи?
Я нашел ответ. У моего фида данных было свойство 'metaData', определяющее конфигурации полей, и, по-видимому, Store использовал их для генерации собственной модели вместо того, что было в моем' FooModel'. Я напишу это в ответ, как только Я позволю. – curtisdf