我在视图中有一个按钮,我已经设置了动作属性,以便我可以在控制器中监听其tap事件,如下所示
查看代码
{
xtype:'button',
text:'SKIP',
action:'skip'
}
控制器代码
onSkipContact:function(){
console.log('tap');
}
现在我想将参数传递给 onSkipContact action ,如下所示
{
xtype:'button',
text:'SKIP',
action:'skip(data.index)' //i want to pass the index of record to the controller
}
以便我可以在控制器中读取如下
onSkipContact:function(index){
console.log('tap' + index );
}
包含cv
Ext.define('ca.view.ContactInfoPanel',{
extend:'Ext.Panel',
xtype:'contactinfopanel',
requires: [ 'ca.view.ContactInfo','ca.view.ContactVote'],
config:{
layout:'vbox',
defaults: {
margin: '10 10 10 10'
} ,
items:[{
xtype:'contactinfo'
},{
xtype:'contactvote', // its a CV
}]
},
initialize:function(){
this.callParent();
}
});
这里是contactvote
,即cv
Ext.define("ca.view.ContactVote",{
extend:'Ext.Container',
xtype:'contactvote',
requires:['Ext.Button'],
config:{
bottom:0,
width: '100%',
defaults: {
margin: '10 20 0 0'
} ,
items:[{
xtype:'button',
text:'SKIP',
action:'skip',
id:'skipbtn'
}]
},
initialize:function(){
console.log(this.data);
this.callParent();
}
});
答案 0 :(得分:0)
首先,将要传递的数据存储在按钮本身的处理程序方法中。例如:
{
xtype: 'button',
text: 'SKIP',
action: 'skip',
// Give it the name you want, just ensure it won't
// overlap a property defined by Ext.
dataIndex: data.index
}
Ext事件侦听器始终作为第一个参数传递事件源(在您的情况下是按钮)。因此,在您的处理程序中,您可以通过以下方式访问数据:
onSkipContact: function(button) {
var index = button.index;
console.log('tap' + index);
}
答案 1 :(得分:0)
试试这个,在按钮配置中设置索引
{
xtype:'button',
text:'SKIP',
action:'skip',
index : data.index
}
在控制器操作中
onSkipContact:function(button){
// You can get index config like this
console.log('tap' + button.index );
}
我假设您在控制器中有类似的配置
refs: {
skipBtn : 'button[action=skip]'
},
control: {
skipBtn : {
tap: 'onSkipContact'
}
}
<强>更新强>
尝试
this.getCv().down('button[action=skip]').index = record.data.index;
而不是
this.getCV().setData(record.data)
您的按钮代码仍然是
{
xtype:'button',
text:'SKIP',
action:'skip'
}