Extjs Sencha Touch:如何将数据从一个视图传递到控制器,并将控制器传递到下一个视图

Extjs Sencha Touch:如何将数据从一个视图传递到控制器,并将控制器传递到下一个视图,extjs,sencha-touch-2,sencha-touch-2.2,Extjs,Sencha Touch 2,Sencha Touch 2.2,我想将一个ID从一个选项卡视图myView1传递给一个控制器控制器,然后我想让该控制器类将数据传递给同一面板上的另一个选项卡视图myView2。谁知道,我怎么做 你可以这样做 在控制器中: config:{ refs:{ myView1: "myView1Ref", myView2: "myView2Ref" }, controls:{ myView1:{ idgiven: "onIdGiven" } } }, onIdGiven: functio

我想将一个ID从一个选项卡视图myView1传递给一个控制器控制器,然后我想让该控制器类将数据传递给同一面板上的另一个选项卡视图myView2。谁知道,我怎么做

你可以这样做

在控制器中:

config:{
refs:{
    myView1: "myView1Ref",
    myView2: "myView2Ref"
},
controls:{
    myView1:{
        idgiven: "onIdGiven"
    }
}
},
onIdGiven: function(id){
    this.getMyView2().setData(yourData);
}
在MyView1中,当您想要提供id时,只需执行以下操作

this.fireEvent(yourId);

这是我的选项卡面板视图类MyTabPanel

})

这是我的控制器:


})

您好,我相信id是唯一的视图实体,它可以在全球范围内访问,以便根据需要使用。@Mureinik,请参阅下面的答案whi Rathore!我知道你的答案,但我不知道如何在myView2中检索值。我试着使用tpl,但记录还没有出来。您能告诉我如何检索setRecord方法传递的记录吗。更多信息,我可以使用DataListView。但这不是我想要的。尽管我也想发送一些Ajax请求,但我仍然无法传递这些数据,我得到的JSON数据也是如此
Ext.define('myapp.controller.theController', {

 extend: 'Ext.app.Controller',
 config: {
     refs: {
         views: [
             'myapp.view.myView1',
             'myapp.view.myView2',
         ],
         refMyView1: 'myView1',
         refMyView2: 'myView2',
    },
    control: {
       'button[action=submit]':{    // on tab of submit button
          tap: 'submitTapHandler'
       },
    },
  },

 submitTapHandler: function(){
   var view1data = this.getRefMyView1().getValues(); // view1data contain all field data of view1 in record form

   //controller to view pass data
   var myView2 =  Ext.create('myapp.view.myView2');
   // create a record that key value have name of fields and value to pass to that field
   var record;
   // set record key value 
   myView2.setRecord(record);
 }

})
Ext.define('MyApp.view.MyTabPanel', {
extend: 'Ext.tab.Panel',

config: {
    items: [
        {
            xtype: 'container',
            title: 'Tab 1',
            id: 'tab1',
            items: [
                {
                    xtype: 'textfield',
                    label: 'User'
                },
                {
                    xtype: 'container',
                    height: 46,
                    margin: '5px',
                    items: [
                        {
                            xtype: 'button',
                            ui: 'action',
                            width: 173,
                            text: 'Send Data'
                        }
                    ]
                }
            ]
        },
        {
            xtype: 'container',
            title: 'Tab 2',
            id: 'tab2',
            tpl: [
                '{id}'
            ]
        },
        {
            xtype: 'container',
            title: 'Tab 3',
            id: 'tab3'
        }
    ]
}
Ext.define('MyApp.controller.MyController', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        Tab1: '#tab1',
        Tab2: '#tab2',
        Tab3: '#tab3'
    },

    control: {
        "Tab2": {
            activate: 'onTabpanelActivate1'
        }
    }
},

onTabpanelActivate1: function(newActiveItem, container, oldActiveItem, eOpts) {
    var Rec = [{id:1}];  // this should come from my #tab1 tab and set to #tab2 tab
    this.getTab2().setRecord(Rec); // So this is the problem I am facing
}