2011-06-11 41 views
7

Tôi có một danh sách các liên hệ mà sencha touch đang hiển thị trong danh sách. Sau đó, khi bạn nhấp vào một tên trong danh sách, nó sẽ trượt sang phải và nói Hello {contact name}! nhưng khi nó trượt qua ngay bây giờ nó chỉ nói Xin chào! trên dòng 29 là nơi hành động đang xảy ra cho mục tap tôi tin rằng vấn đề là ở đây. Tôi chỉ không biết làm thế nào để định dạng nó một cách chính xác. Dưới đây là mã nguồn của tôi.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] 
    }); 

} 

});

Trả lời

11

Đối số đầu tiên được chuyển đến sự kiện itemtap không phải là bản ghi của mục Danh sách được khai thác, đó là chính DataView.

Từ các tài liệu:

itemtap: (Ext.DataView này, chỉ số Number, Ext.Element mục, Ext.EventObject e) cháy khi một nút được khai thác trên

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 

Bạn có thể lấy bản ghi được khai thác bằng cách sử dụng:

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

Tôi chỉ học sencha chạm vào đối tượng dataview là gì, chỉ mục của mục đã được khai thác, phần tử mục và đối tượng sự kiện. Ngoài ra, làm thế nào là dataView các đối số 1 và 'chỉ số' thứ 2. Cảm ơn bạn đã giúp đỡ. – Alex

+0

Danh sách kế thừa từ một DataView và sự kiện 'itemtap' là một danh sách được kế thừa từ lớp cơ sở DataView. Các tài liệu do đó là một chút bối rối khi sử dụng một danh sách. Đối số đầu tiên của trình xử lý sự kiện chứa một tham chiếu đến cá thể Liệt kê của bạn (tương đương với biến 'ListDemo.listPanel' trong ví dụ của bạn). Đối số 'chỉ mục' đề cập đến địa điểm trong Danh sách mục được khai thác rơi, ví dụ: 1 mục danh sách khai thác cho index = 0, mục thứ hai khai thác cho index = 1 vv Đối với trường hợp sử dụng đơn giản, bạn có thể bỏ qua mục và e đối số - cộng với tôi đang hết dung lượng .. :) – Stuart

+0

Điều này dường như bị hỏng khi làm việc với các danh sách được nhóm. – Art

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

Đó là cách tôi làm cho nó hoạt động.

+2

Điều này có vẻ bị hỏng khi làm việc với các danh sách được nhóm. – Art

+1

Lưu ý rằng trong Sencha Touch 2, phương thức cập nhật giờ đã được setData() – cyberwombat

Các vấn đề liên quan