如何获取itemtap上的店铺记录
我知道在 onItemTap 中,我可以通过以下方式检索相应的数据记录
itemtap : function(dv, index, item, e){
dv.getStore().getAt(index);
,但我的列表是通过收集数据方法进行过滤的,因此索引与数据存储中的 id 不对应。 有没有办法在点击列表时获取数据记录,而不管列表索引如何?
[更新]
嵌入列表视图的代码片段如下所示:
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 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...]
},
});
}
I know that in an onItemTap, I can retrieve the corresponding data record by
itemtap : function(dv, index, item, e){
dv.getStore().getAt(index);
But my list is filtered via a collectData-Method, so the indexes do not correspond with the ids in the data store.
Is there any way to get the data record when tapping the list, regardless of the list indexes?
[Update]
The snippet where the listview is embedded looks like this:
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)
]
}
]
...
And the 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...]
},
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我的代码中,我总是使用这个:
item
,如果我没记错的话,是被点击的div
的Ext.Element
,那么你应该没问题。DataView
确实从Element
提供了getRecord
,因此您可以使用它。如果我没记错的话,几个月前当我碰巧遇到你的问题时,我从他们的一个源文件中看到了这一点。
快乐编码!
In my code, I always use this:
item
, if I'm not remembered wrongly, is theExt.Element
of the clickeddiv
, so then you should be fine.DataView
does providegetRecord
fromElement
, so you can use it.If I'm not wrong, I saw this from one of their source file when I happened to face your problem in some months ago.
Happy coding!