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

use*_*861 5 listview extjs mobile-website sencha-touch

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


  }
 });
Run Code Online (Sandbox Code Playgroud)

控制器代码:

 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');
},
Run Code Online (Sandbox Code Playgroud)

小智 9

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

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

    event.stopEvent();
},
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不是选定的答案?!? (2认同)

Swa*_*war 0

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