у меня есть сенсорное приложение sencha, которое использует панель вкладок, бета-версия этого приложения загружает все элементы панели вкладок и отображает их. с таким количеством элементов переключение между вкладками стало медленнее для оптимизации моя идея состоит в том, чтобы загружать элементы только тогда, когда определенная панель активируется после отображения маски загрузки.
Мне удалось заставить его работать при первом нажатии, но когда я переключаюсь на ту же вкладку в другой раз, она не заполняется или, по крайней мере, элементы не отображаются. исключения не выбрасываются.
Ext.application({
name : 'Sencha',
launch : function() {
var root = contents;
var children = root._listOfContentChild;
var mainPanel = Ext.create('components.NavigationPanel',
{
iconCls : 'more',
listeners: {
activate: function() {
mainPanel.setMasked({
xtype: 'loadmask',
message: 'Loading...'
});
setTimeout(function() {
loadItems(root,children); // returns my items
mainPanel.setItems(items);
mainPanel.setMasked(false);
}, 300);
} } });
var settingsPanel = Ext.create('components.NavigationPanel', {
title : 'Settings',
iconCls : 'settings',
});
view=Ext.Viewport.add({
xtype : 'tabpanel',
deferredRender:true,
tabBarPosition : 'bottom',
activeItem:settingsPanel,
items : [mainPanel,settingsPanel ]
});
}
});
обзор:
мое приложение работает правильно, если все элементы заполнены в начале, прежде чем нажимать на вкладки моя проблема в том, что у меня есть огромное количество элементов, и я нажимаю на соответствующую вкладку. зависает на 1,2 сек. человек, использующий это приложение, подумает, что он не правильно нажал на вкладку, и оно будет выглядеть очень медленно. мой подход состоит в том, чтобы загрузить маску при нажатии на вкладку всего на 1 секунду, это заставит мою вкладку автоматически реагировать при нажатии, затем я добавляю свои элементы. эта идея сработала только для первого клика,когда я переключаюсь на другую вкладку и возвращаюсь к исходной, ничего не отображается (, кроме маски загрузки )я пробовал mainPanel.add
вместо mainPanel.setItems
. я столкнулся с другой проблемой, теперь при следующем тапе на панели мои предметы отображаются, но без маски загрузки, как будто я загружаю элементы в начале до нажатия.