Панель инструментов Sencha Touch 1.1 получает только последний прослушиватель html-событий - PullRequest
1 голос
/ 16 января 2012

Я использую 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');
        };
    }

Есть ли способ сделать это в чистом прикосновении сенча?

...