从sencha touch中的视图传递参数到action属性

时间:2013-08-29 11:53:53

标签: button extjs properties sencha-touch-2

我在视图中有一个按钮,我已经设置了动作属性,以便我可以在控制器中监听其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();

    }





});

2 个答案:

答案 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'
}