我正在尝试处理同一列表中的事件,第一个是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');
},
阻止itemtap
事件继续冒泡。首先,您需要函数调用的参数,然后在事件参数上调用stopEvent()
。
disclosure: function(list, record, node, index, event, eOpts) {
console.log('disclose');
event.stopEvent();
},
onItemDisclosure
是 Ext.List 的属性 - 不是事件。在控制器的control
中,我们使用事件。因此,在这里您将需要披露类似于"itemtap"事件的事件。检查此链接。