这里回答了类似的问题:How to add itemtap
但是当我尝试将Ext.dispatch()
代码从onItemDisclosure:
移到listeners: {itemtap:}
时,它无效。
Ext.dispatch最初住在这里:
onItemDisclosure: {
scope: this,
handler: function (record) {
// Call the controller's "show" action
Ext.dispatch({
controller: myApp.controllers.products,
action: 'show',
id: record.getId()
});
}
}
但现在我希望它住在这里(删除披露按钮并使整行可选):
listeners: {
scope: this,
itemTap: function (record) {
alert('!!!');
// Call the controller's "show" action
Ext.dispatch({
controller: myApp.controllers.products,
action: 'show',
id: record.getId()
});
}
}
修改
调用itemTap:
侦听器中的函数(显示警报),但控制器中不会调用'show'
操作,因为Ext.dispatch
存在于onItemDisclosure:
内}。
答案 0 :(得分:2)
假设你在另一个问题中在列表中执行此操作,则itemtap事件将传递4个参数:Ext.DataView this,Number index,Ext.Element item,Ext.EventObject e。
所以你想做一些像
这样的事情itemtap: function(dataView, index, item, e) {
Ext.dispatch({
controller: myApp.controllers.products,
action: 'show',
id: index
});
}
假设getId()只是给你记录的索引。如果它给你一些其他东西,你可以通过
获得记录对象dataView.getStore().getAt(index) /* .getId() */
希望有所帮助。