2011-06-11 15 views
7

私は、Sencha Touchがリストに表示している連絡先のリストを持っています。リスト内の名前をクリックすると、右にスライドしてHello {連絡先名}と答えてください!それが今スライドすると、こんにちは!29行目でアイテムタップのアクションが起こっている場所はどこですか?問題はここにあります。私はちょうどそれを正しくフォーマットする方法を知らない。以下は私のソースコードです。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] 
    }); 

} 

});

答えて

11

itemtapイベントに渡される最初の引数は、タップされたList項目のレコードではなく、DataView自体です。ドキュメントから

itemtap:(Ext.DataViewこの、番号インデックス、Ext.Elementとしてアイテム、 Ext.EventObject電子) 火災ノードが

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 
にタップされます

あなたが使用してタップレコードをつかむことができます。

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

私はちょうどデータビューオブジェクト、タップされたアイテムのインデックス、アイテム要素、およびイベントオブジェクトを覚えています。また、dataViewは第1引数、第2引数はどのようにインデックスされますか。ご協力いただきありがとうございます。 – Alex

+0

ListはDataViewから継承し、 'itemtap'イベントはDataView基本クラスから継承されたイベントです。したがって、リストを使用する場合、ドキュメントは少し混乱します。イベントハンドラの最初の引数には、Listインスタンスへの参照が含まれています(例の変数 'ListDemo.listPanel'に相当)。 'index'引数は、List内のタップされた項目が落ちる場所を指します。 1番目のリストアイテムはタップされたインデックス= 0、タップされた2番目のアイテムはインデックス= 1などになります。単純なユースケースではアイテムとeの引数を無視できます。さらにスペースがなくなりました.. :) – Stuart

+0

これはグループ化されたリストを使って作業します。 – Art

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

これは私がそれを動作させる方法です。

+2

これは、グループ化されたリストを扱うときに壊れているようです。 – Art

+1

Sencha Touch 2では、updateメソッドがsetData()になりました。 – cyberwombat