0

我在视图中有一个按钮,并且我设置了它的动作属性,以便我可以在控制器中监听它的点击事件,如下所示

查看代码

{
     xtype:'button',
     text:'SKIP',
     action:'skip'      
}

控制器代码

onSkipContact:function(){
      console.log('tap');
}

现在我想将参数传递给onSkipContact 操作,如下所示

{
  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();

    }



});

这是contactvotecv

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();

    }





});
4

2 回答 2

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);
}
于 2013-08-29T12:23:29.060 回答
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'
}
于 2013-08-29T12:23:57.853 回答