Я использую Sencha Touch 1.1, чтобы написать веб-страницу. Я написал этот код панели инструментов:
MyApp.views.ListCat1 = new Ext.Toolbar({
id: 'ListCat1',
title: 'Category 1',
width: 300,
listeners: {
mouseout: {
element: 'el',
fn: function(){
MyApp.views.viewport.remove(MyApp.views.listPanel, false);
MyApp.views.viewport.doLayout();
}
},
mouseover: {
element: 'el',
fn: function(){
MyApp.views.viewport.add(My.views.listPanel);
MyApp.views.viewport.doLayout();
MyApp.views.listPanel.setPosition(MyApp.views.ListCat1.getWidth(), (-1) * MyApp.views.ListContainer.getHeight());
}
}
}
});
Панель инструментов получает только последнего слушателя. В этом случае это будет наведение мыши. Если события расположены в обратном порядке (сначала указывается указатель мыши, а затем указатель мыши), панель инструментов получит только прослушиватель указателя мыши.
Что-то не так в коде? Есть ли лучший подход для установки двух слушателей на один элемент?
Спасибо!
Используя стандартные события javascript, я могу обработать другое событие DOM, но я бы предпочел использовать только вещи sencha ...
MyApp.views.ListCat1 = new Ext.Toolbar({
id: 'ListCat1',
title: 'Category 1',
width: 300,
listeners: {
mouseover: {
element: 'el',
fn: function() {
MyApp.views.viewport.add(MyApp.views.listPanel);
MyApp.views.viewport.doLayout();
MyApp.views.listPanel.setPosition(MyApp.views.ListCat1.getWidth(), (-1) * MyApp.views.ListContainer.getHeight());
console.log('mouseover');
}
}
},
afterRender: function(){
window.addEventListener('mouseout', handleMO, false);
}
});
function handleMO(event){
if (event.target.id == MyApp.views.ListCat1.el.id){
MyApp.views.viewport.remove(MyApp.views.listPanel, false);
MyApp.views.viewport.doLayout();
console.log('mouseout');
};
}
Есть ли способ сделать это в чистом прикосновении сенча?