2011-06-11 19 views
7

Ho una lista di contatti che sencha touch sta visualizzando in una lista. Quindi quando fai clic su un nome nell'elenco dovrebbe scorrere verso destra e pronunciare Hello {nome contatto}! ma quando scivola in questo momento dice semplicemente Hello! on line 29 è dove si sta svolgendo l'azione per l'elemento tap credo che il problema sia qui. Non so come formattare correttamente. Di seguito è il mio codice sorgente.Sencha Touch itemtap

ListDemo = new Ext.Application({ 
name: "ListDemo", 

launch: function() { 

    ListDemo.detailPanel = new Ext.Panel({ 
     id: 'detailpanel', 
     tpl: 'Hello, {firstName}!', 
     dockedItems: [ 
      { 
       xtype: 'toolbar', 
       items: [{ 
        text: 'back', 
        ui: 'back', 
        handler: function() { 
         ListDemo.Viewport.setActiveItem('disclosurelist', {type:'slide', direction:'right'}); 
        } 
       }] 
      } 
     ] 
    }); 

    ListDemo.listPanel = new Ext.List({ 
     id: 'disclosurelist', 
     store: ListDemo.ListStore, 
     itemTpl: '<div class="contact">{firstName} {lastName}</div>', 

     listeners:{ 
      itemtap: function(record, index){    
      ListDemo.detailPanel.update(record.data); 
      ListDemo.Viewport.setActiveItem('detailpanel'); 
      } 
     } 
    }); 

    ListDemo.Viewport = new Ext.Panel ({ 
     fullscreen: true, 
     layout: 'card', 
     cardSwitchAnimation: 'slide', 
     items: [ListDemo.listPanel, ListDemo.detailPanel] 
    }); 

} 

});

risposta

11

Il primo argomento passato all'evento itemtap non è il record dell'elemento Elenco TAPpato, è lo stesso DataView.

Dalla documentazione:

itemtap: (Ext.DataView questo, indice Numero, elemento Ext.Element, Ext.EventObject e) Viene eseguito quando un nodo viene prelevata su

Listeners will be called with the following arguments: 
this : Ext.DataView 
    The DataView object 
index : Number 
    The index of the item that was tapped 
item : Ext.Element 
    The item element 
e : Ext.EventObject 
    The event object 

si può afferrare il record sfruttato da utilizzare:

dataView.store.getAt(index); // where 'dataView' is 1st argument and 'index' the 2nd 
+0

Sto solo imparando sencha touch qual è l'oggetto dataview, l'indice dell'elemento che è stato toccato, l'elemento item e l'oggetto evento. Inoltre, come è dataView il primo argomento e 'index' il secondo. Grazie per l'aiuto. – Alex

+0

Un elenco eredita da un DataView e l'evento 'itemtap' è uno che viene ereditato dalla classe base DataView. Pertanto la documentazione è un po 'di confusione quando si utilizza una lista. Il primo argomento del gestore eventi contiene un riferimento all'istanza List (equivalente alla variabile 'ListDemo.listPanel' nell'esempio). L'argomento 'indice' si riferisce al luogo in cui l'elemento TAPpato cade ad es. Il primo elemento della lista TAPpato dà l'indice = 0, il secondo oggetto toccato dà l'indice = 1 ecc. Per casi d'uso semplici puoi ignorare l'argomento e gli argomenti e più sto esaurendo lo spazio .. :) – Stuart

+0

Questo sembra essere rotto quando lavorando con liste raggruppate. – Art

9
itemtap: function(view, index, item, e) { 
    var rec = view.getStore().getAt(index); 
    ListDemo.detailPanel.update(rec.data); 
} 

Ecco come ho potuto farlo funzionare.

+2

Questo sembra essere rotto quando si lavora con elenchi raggruppati. – Art

+1

Si noti che in Sencha Touch 2 il metodo di aggiornamento è ora setData() – cyberwombat