Как я могу вставить обработчик для объекта HTML? - PullRequest
2 голосов
/ 13 мая 2011

вопрос прост!

У меня есть такой объект:

new Ext.Panel({

        id: 'Panel',
        fullscreen: true,
        dockedItems: [
                  dock:...,
                  width: ...,
                  listeners: { el: /*TOUCHEVENTS*/ },
                  html: '<object id='objectID' data="blabla"/>'
        ]

    });

Как я могу добавить событие (например, касание или сжатие) в объект HTML с id = ObjectID???

Заранее спасибо;)

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Я предлагаю вам использовать делегирование событий, чтобы сделать возможным то, что вы запрашиваете.Делегирование событий позволяет вам установить прослушиватели касаний на конкретную цель на внутреннем HTML-объекте вашей панели.Я напишу вам пример, который покажет вам, как это сделать:

Ext.setup({
onReady: function() {

    //Definition of a handler function
    var myHandler = function(){
        Ext.Msg.alert('What???','Did you Tap me?');
    };

    //Definition of a simple Panel
    var p = new Ext.Panel({
        fullscreen: true,
        dockedItems: [{
            xtype: 'panel',
            dock: 'top',
            height: '30',
            html: '<div id="myObject">Tap me please</div>',
            listeners: {
                body: {
                    tap: myHandler,
                    delegate: '#myObject'     
                 }
            }
        }]
    });

}
});

Если вы запустите этот код, вы увидите это, когда вы нажмете «Нажмите меня, пожалуйста!»div, ваше событие будет запущено.

Надеюсь, это поможет.

1 голос
/ 14 мая 2011

Что-то вроде:

var p = new Ext.Panel({
    id: 'Panel',
    fullscreen: true,
    dockedItems: [
        html: '<object id='objectID' data="blabla"/>'
    ]
});
p.on('render', function() {
    Ext.get("objectID").on('click', function() {
        alert('imclicket');
    });    
});
...