1

我想将一个 ID 从Tabview (myView1) 传递给一个控制器(theController),然后我希望该 Controller 类将数据传递给同一面板上的另一个Tabview (myView2)。任何人都有任何想法,我该怎么做?

4

4 回答 4

0

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

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'
        }
    ]
}

});

于 2013-10-11T07:12:40.733 回答
0
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);
 }

})
于 2013-10-09T05:48:25.170 回答
0

这是我的控制器:

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
}

});

于 2013-10-11T07:16:15.907 回答
0

你可以这样做

在您的控制器中:

config:{
refs:{
    myView1: "myView1Ref",
    myView2: "myView2Ref"
},
controls:{
    myView1:{
        idgiven: "onIdGiven"
    }
}
},
onIdGiven: function(id){
    this.getMyView2().setData(yourData);
}

在 MyView1 中,当您想提供 id 时,只需执行

this.fireEvent(yourId);
于 2013-10-08T14:19:56.527 回答