目标是仅在第一次点击时显示警告框。
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
})
谢谢。
答案 0 :(得分:25)
如果您想要仅触发一次事件,请使用: -
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
快乐的ExtJS:)
答案 1 :(得分:10)
如果你命名你的匿名函数会有用吗?此外,您可以从方法调用中获取对该按钮的引用,因此您无需使用Ext.getCmp()
。
Ext.getCmp('myBtn').on('click', function handleClick(button, event){
alert('Alert this message only in first click.');
button.removeListener('click', handleClick);
})
答案 2 :(得分:5)
尝试使用命名函数而不是匿名函数。
var myfunction = function() {
alert('Alert this message only in first click.');
Ext.getCmp('myBtn').un('click', myfunction);
}
Ext.getCmp('myBtn').on('click',myfunction);