Sencha Touch itemtap - PullRequest
       1

Sencha Touch itemtap

7 голосов
/ 12 июня 2011

У меня есть список контактов, которые Sencha Touch отображает в списке. Затем, когда вы щелкнете по имени в списке, оно должно сдвинуться вправо и сказать «Привет {имя контакта»! но когда он скользит прямо сейчас, он просто говорит «Hello!» в строке 29, где происходит действие, касающееся предмета, и я верю, что проблема здесь. Я просто не знаю, как правильно отформатировать его. Ниже мой исходный код.

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]
    });

}

});

Ответы [ 2 ]

11 голосов
/ 12 июня 2011

Первый аргумент, передаваемый событию itemtap, - это не запись прослушиваемого элемента списка, а сам DataView.

Из документов:

itemtap: (Ext.DataView this, Number index, Ext.Element item, Ext.EventObject e) Запускается при нажатии на узел

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
9 голосов
/ 12 июня 2011
itemtap: function(view, index, item, e) {
    var rec = view.getStore().getAt(index);
    ListDemo.detailPanel.update(rec.data);
}

Вот так я и заставил его работать.

...