2012-05-31 4 views
5

Aynı listedeki olayları işlemeye çalışıyorum, birincisi itemtap olayı diğeri onItemDisclosure olayıdır.Firing onItemDisclosure olayı, itemtap olayının tetiklenmesine neden oluyor

Okuya bastığımda, onItemDisclosure olayı tetiklenir ve işleyici çalıştırılır, ancak, itemtap da tetiklenir ve onItemDisclosure işleyicisi yürütüldükten sonra, itemtap işleyicisi sırayla yürütülür.

Bunu nasıl çözebilirim?

Görünüm:

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}' 


    } 
}); 

Kontrolör Kodu: - bir olaydır

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'); 
}, 

cevap

0

onItemDisclosure Ext.List bir özelliktir. Denetleyicinin control sürümünde, olayları kullanırız. Yani, burada "itemtap" olayına benzer olayına ihtiyacınız olacak. Bu link kontrol edin.

+0

Beni düzeltdiğiniz için teşekkürler, ancak ok tıklattığımda hala iki olay tetikleniyor. – user1203861

+0

Bu cevap soruya cevap vermiyor; moosekebab's – JoshuaDavid

9

Kabarcık devam eden itemtap olayını durdurmanız gerekir. Öncelikle, işlev çağrısının argümanlarına ihtiyacınız var, daha sonra stopEvent() olarak adlandırdığınız olay argümanında.

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

    event.stopEvent(); 
}, 
+2

Bunu neden seçilen cevap değil?!? – JoshuaDavid

İlgili konular