ComponentLoader, плавающая ошибка
Имеется модель для хранения объектов с xtype: 'src', то есть картинок, которые нужно вывести.
Ext.define('ItemModel', { extend: 'Ext.data.Model', idProperty: 'itemModel', fields: [{ name: 'id', type: 'int' },{ name: 'xtype', type: 'string' },{ name: 'src', type: 'string' }] }); С сервера передается такой JSON: [{"id":0,"xtype":"image","src":"img\/newalbum.png"},{"id":1,"xtype":"image","src":"img\/newalbum1.png"}] Затем изображения выводятся на панели с помощью loader-а: var previews = Ext.create('Ext.Panel',{ layout: 'column', height: 500, loader:{ autoLoad : true, url: 'src/read.php', renderer: "component", } }); При перезагрузке страницы периодически возникает ошибка: Код:
TypeError: me.el is null При этом страница не отрисовывается. Периодичность в разных браузерах разная. В IE вообще не возникает, однако появляется, если включить отладчик. В Firefox возникает более-менее часто, но как я заметил, тоже только при включенном firebug-е. В Опере и Хроме происходит постоянно. То, что ошибка проявляется только при включенных средствах разработки, наводит на мысль, что ошибка эта есть всегда, но она не критична, если "средства" её не зафиксировали. Ошибка возникает только когда в панель добавлен loader. |
Я изменил способ добавления рисунков на панель. Теперь я использую хранилище с ридером и перебирая полученные элементы добавляю их на панель методом add:
var previews = Ext.create('Ext.Panel',{ layout: 'column', height: 500, /*loader:{ autoLoad : true, url: 'php/read.php', renderer: "component", } */ }); Ext.define('ItemModelStore', { extend: 'Ext.data.Store', model: 'ItemModel', proxy: { type: 'ajax', url: 'php/read.php', reader:{ type:'json', root: 'objs' } } }); var itemModelStore = Ext.create('ItemModelStore'); itemModelStore.load(function() { itemModelStore.each(function(record){ previews.add({ 'id': record.get('id'), 'xtype': 'image', 'src': record.get('src'), 'style' : 'padding-left:5px;padding-top:5px;cursor:pointer;', listeners: { el: { click: function() { location.href = 'http://yandex.ru?id=' + record.get('id'); } } } }); }); }); previews.doLayout(); Этот способ больше подходит, так как проще добавлять обработчики событий и вообще... Но по сути моей проблемы ничего не изменилось. Та же ошибка время от времени происходит в IE и FF, а в Опере и Хроме страница отрисовывается вообще практически только при первой загрузке. Только я ошибался по поводу того, что ошибка в IE возникает только когда активны "Средства разработки". |
Проблема решена. Решение тут: http://www.sencha.com/forum/showthre...31#post1047631
|
Часовой пояс GMT +3, время: 00:54. |