2012-05-31 18 views
5

Próbuję obsłużyć zdarzenia na tej samej liście, pierwsza to zdarzenie itemtap, a druga to zdarzenie onItemDisclosure.Wystrzeliwanie zdarzenia onItemDisclosure powoduje wywołanie zdarzenia itemtap.

Po stuknięciu w strzałkę zostaje wywołane zdarzenie onItemDisclosure i wykonywana jest procedura obsługi, jednak uruchamiana jest również itemtap, a po wykonaniu procedury obsługi obiektu onItemDisclosure następuje wykonanie instrukcji obsługi elementu itemtap.

Jak mogę to rozwiązać?

Widok:

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


    } 
}); 

Kod Kontroler:

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

Odpowiedz

0

onItemDisclosure jest własnością Ext.List - nie wydarzenie. W kontrolerze control używamy zdarzeń. Tak więc, będziesz potrzebować ujawnić wydarzenie podobne do zdarzenia "itemtap". Sprawdź to link.

+0

Dzięki za poprawienie mnie, ale nadal te dwa zdarzenia są uruchamiane po kliknięciu strzałki. – user1203861

+0

Ta odpowiedź nie zawiera odpowiedzi na pytanie; moosekebab ma – JoshuaDavid

9

Musisz zatrzymać zdarzenie itemtap w dalszym ciągu bańki. Najpierw potrzebujesz argumentów do wywołania funkcji, a następnie do argumentu zdarzenia, który wywołujesz stopEvent().

+2

Dlaczego ta odpowiedź nie jest wybrana?!? – JoshuaDavid