В ExtJS, как неожиданно отменить привязку при возникновении события пожара? - PullRequest
6 голосов
/ 22 апреля 2011

Цель - показывать окно предупреждения только при первом нажатии.

Ext.getCmp('myBtn').on('click', function(){
    alert('Alert this message only in first click.');
    Ext.getCmp('myBtn').un('click', this); // my attempt, still not work
})

Спасибо.

Ответы [ 3 ]

25 голосов
/ 22 апреля 2011

Если вы хотите, чтобы событие было запущено ровно один раз, используйте это: -

Ext.getCmp('myBtn').on('click', function(){
    alert('Alert this message only in first click.');
}, null, {single: true});

{single:true} заставит эту анонимную функцию запускаться ровно один раз после отправки, поэтому это должно выполнить ваше требование.

Примечание: null на самом деле является полезным регулятором объема. Это может понадобиться для изменения области действия анонимной функции

Проверьте ExtJS Events @ http://docs.sencha.com/extjs/5.0.0/core_concepts/events.html

Также проверьте параметры события @ http://docs -origin.sencha.com / extjs / 5.0.0 / apidocs / #! / Api / Ext.mixin.Observable-method-on

Happy ExtJS:)

10 голосов
/ 22 апреля 2011

Будет ли это работать, если вы назвали свою анонимную функцию?Кроме того, вы можете получить ссылку на кнопку из вызова метода, поэтому вам не нужно использовать Ext.getCmp().

Ext.getCmp('myBtn').on('click', function handleClick(button, event){
    alert('Alert this message only in first click.');
    button.removeListener('click', handleClick);
})
5 голосов
/ 22 апреля 2011

Попробуйте работать с именованной функцией, а не с анонимной.

var myfunction = function() {

   alert('Alert this message only in first click.');
   Ext.getCmp('myBtn').un('click', myfunction);
}

Ext.getCmp('myBtn').on('click',myfunction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...