2012-05-31 19 views
5

同じリストのイベントを処理しようとしています。最初はitemtapイベントで、もう1つはonItemDisclosureイベントです。onItemDisclosureイベントを発生させるとitemtapイベントが発生する

矢印をタップすると、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

onItemDisclosureがExt.Listの財産である - ないイベント。コントローラのcontrolでは、イベントを使用します。したがって、のイベントを「itemtap」イベントと同様に開示する必要があります。これをチェックしてくださいlink

+0

私を訂正していただきありがとうございますが、矢印をクリックすると2つのイベントが発生します。 – user1203861

+0

この回答は質問には対処しません。 moosekebab'sは – JoshuaDavid

9

itemtapイベントは停止してください。まず、関数呼び出しの引数が必要です。次に、stopEvent()というイベント引数に必要です。

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

    event.stopEvent(); 
}, 
+2

なぜこれが選択された答えではありませんか? – JoshuaDavid

関連する問題