store extend
Вот такая проблема. Я хочу создать свой класс унаследовав его от store. прописываю вот так:
Ext.define("Ext.data.Store2", { extend: 'Ext.data.Store', idProperty: 'id', remoteSort: true, proxy: { type: 'ajax', actionMethods: { read: 'POST' }, reader: { root: 'data', totalProperty: 'totalCount' }, simpleSortMode: true }, sorters: [ { property: 'id', direction: 'ASC' }], constructor: function(config) { this.proxy.url = config.url; Ext.data.Store2.superclass.constructor.call(this, config); } }); Теперь создаем 2 экземпляра класса: var store1 = Ext.create("Ext.data.Store2", { pageSize: 20, fields: ['id', 'name'], url: 'data1.php', autoLoad: true, listeners: { load: { fn: function() { console.log(this.model.modelName); console.log(this.data.items[0].id); console.log(this.data.items[0].data); } } } }); var store2 = Ext.create("Ext.data.Store2", { pageSize: 20, fields: ['id', 'datetime_create'], url: 'data2.php', autoLoad: true, listeners: { load: { fn: function() { console.log(this.model.modelName); console.log(this.data.items[0].id); console.log(this.data.items[0].data); } } } }); после загрузки сторов в консоль выводятся данные. но выводятся не так как надо. во втором сторе поля почемуто берутся из первой. вот то что вывелось: Ext.data.Store.ImplicitModel-ext-gen1022 Ext.data.Store.ImplicitModel-ext-gen1021-1 Object {id: "1", name: ""} Ext.data.Store.ImplicitModel-ext-gen1021 Ext.data.Store.ImplicitModel-ext-gen1021-1 Object {id: "1", name: "google"} вот во втором варианте мы видим поля id, name. хотя должно быть id, datetime_create подскажите как правильно прописать класс. |
Цитата:
constructor: function(config) { config = Ext.apply({ proxy: { type: 'memory', reader: 'array' } }, config); this.callParent([config]); }, |
ага, понял.. позже попробую
|
писибки. вот что получилось:
вот сам класс Ext.define("Ext.data.Store2", { extend: 'Ext.data.Store', idProperty: 'id', remoteSort: true, sorters: [ { property: 'id', direction: 'ASC' }], constructor: function(config) { //config = Ext.apply( config = Ext.Object.merge( { proxy: { type: 'ajax', url: config.url, actionMethods: { read: 'POST' }, reader: { root: 'data', totalProperty: 'totalCount' }, simpleSortMode: true } }, config); //console.log(config); this.callParent([config]); } }); и вот сами сторы: var store11 = Ext.create('Ext.data.Store2', { pageSize: 20, fields: ['id', 'name'], url: 'theme.get.php', autoLoad: true }); var store22 = Ext.create('Ext.data.Store2', { pageSize: 20, fields: ['id', 'en'], url: 'word.get.php', proxy: { extraParams: { theme_id: 1 } }, autoLoad: true }); |
ждем продолжения когда вы обнаружите что sorters у вас тоже общий между всеми экземплярами класса ;)
|
Часовой пояс GMT +3, время: 11:28. |