#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».