5

我正在尝试处理同一列表上的事件,第一个是 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');
},
4

2 回答 2

9

您需要阻止itemtap事件继续冒泡。首先你需要函数调用的参数,然后是你调用的事件参数stopEvent()

disclosure: function(list, record, node, index, event, eOpts) {
    console.log('disclose');        

    event.stopEvent();
},
于 2012-08-31T10:58:15.443 回答
0

onItemDisclosure是 Ext.List 的属性 - 不是事件。在控制器中control,我们使用事件。因此,在这里您将需要披露类似于“itemtap”事件的事件。检查此链接

于 2012-06-01T08:25:34.130 回答