我正在尝试处理同一列表中的事件,第一个是itemtap事件,另一个是onItemDisclosure事件。
当我点击箭头时,会触发onItemDisclosure事件并执行处理程序,但是,也会触发itemtap,并且在onItemDisclosure处理程序执行之后,又会执行itemtap处理程序。
我该如何解决这个问题?
查看:
Ext.define('myapp.view.listview', {
requires: [ 'myapp.model.listmodel'],
extend: 'Ext.List',
alias:'widget.listview',
id : 'listview',
fullscreen: true,
config: {
iconCls: 'list',
title : 'List',
onItemDisclosure: function () {
alert('ok')
},
store:'ListView',
itemTpl:'{title}'
}
});
控制器代码:
Ext.define('myapp.controller.Main', {
extend: 'Ext.app.Controller',
views : ['listview'],
config : {
refs:{
list:'#listview'
},
control :{
listview:{
itemtap:'display',
onItemDisclosure : 'disclosure'
}
}
},
display:function(){
alert('tap')
},
disclosure:function (){
alert('disclosure');
},
答案 0 :(得分:9)
您需要停止itemtap
事件继续冒泡。首先,您需要函数调用的参数,然后是您调用stopEvent()
的事件参数。
disclosure: function(list, record, node, index, event, eOpts) {
console.log('disclose');
event.stopEvent();
},
答案 1 :(得分:0)
onItemDisclosure
是Ext.List的属性 - 不是事件。在控制器的control
中,我们使用事件。因此,您需要披露类似于“itemtap”事件的事件。请检查此link。