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

#javascript #sencha-touch #extjs

#javascript #сенча-касание #extjs

Вопрос:

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

У меня есть объект, подобный этому:

 new Ext.Panel({

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

    });
  

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

Заранее спасибо 😉

Ответ №1:

Я предлагаю вам использовать делегирование событий, чтобы сделать возможным то, что вы запрашиваете. Делегирование событий позволяет вам настроить прослушиватели нажатий на определенную цель на вашем внутреннем 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 «Коснитесь меня, пожалуйста!» ваше событие будет запущено.

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

Ответ №2:

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

 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');
    });    
});
  

Комментарии:

1. Теперь работает, но консоль сообщает: «Ресурс интерпретируется как документ, но передается с использованием MIME-типа image / svg xml», А событие click не отображается : (

2. Затем это s some another problem. Try to scope it without any Ext.Panel and just with pure HTML and with only Ext.get(«ObjectId»).on(часть «click».