如何在itemtap上获取商店记录

时间:2011-10-25 14:02:05

标签: extjs sencha-touch

我知道在onItemTap中,我可以通过

检索相应的数据记录
      itemtap : function(dv, index, item, e){
          dv.getStore().getAt(index);

但我的列表是通过collectData-Method过滤的,因此索引与数据存储中的ID不对应。 无论列表索引如何,有没有办法在点击列表时获取数据记录?

[更新]

嵌入listview的代码段如下所示:

app.views.MyView = Ext.extend(Ext.TabPanel, {
    ...
    items: [
        {
            title: _('PanelTitel'),
            xtype: 'panel',
            scroll: 'vertical',
            items: [
                getListView(0)
            ]
        },
        {
            title: _('Second PanelTitel'),
            xtype: 'panel',
            scroll: 'vertical',
            items: [
                getListView(1)
            ]
        }
 ]

...

getListView-function:

function getListView(tab_index) {

    return new Ext.List({
        store: new Ext.data.Store(
            {
                model: "app.models.MyModel",
                sorters: 'created_at'
            }
        ),
        itemTpl: new Ext.XTemplate(
            '<tpl for=".">',
              '<div class="my_row">',
              '  {username}',
              '</div>',
            '</tpl>'
        ),
        onItemDisclosure: true,
        listeners : {
          itemtap : function(dv,index,item,e){
              var rec = dv.getRecord(item);
          }
        },
        collectData: function(records, startIndex) {
           [some sorting...]
        },
    });
}

1 个答案:

答案 0 :(得分:1)

在我的代码中,我总是使用它:

function(dv, index, item, e){
    var rec = dv.getRecord(item);
    //...
}

item,如果我没有被错误地记住,则是点击Ext.Element的{​​{1}},那么你应该没事。 div确实提供了来自DataView的{​​{1}},因此您可以使用它。

如果我没有错的话,几个月前我碰巧遇到你的问题时,我从他们的一个源文件中看到了这个。

快乐的编码!