触发onItemDisclosure事件会导致itemtap事件触发

时间:2012-05-31 21:20:02

标签: listview sencha-touch extjs mobile-website

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

2 个答案:

答案 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