Sencha Touch:如何将数据从视图传递到控制器和控制器到下一视图

时间:2013-10-08 11:09:41

标签: extjs sencha-touch-2 sencha-touch-2.2

我想将一个ID从 Tabview (myView1)传递给 Controller (theController),然后我希望Controller类将数据传递给另一个< b> Tabview (myView2)在同一个Panel。任何人有任何想法,我该怎么做?

4 个答案:

答案 0 :(得分:0)

你可以这样做

在您的控制器中:

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

,当你想要提供id时,只需执行

this.fireEvent(yourId);

答案 1 :(得分: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);
 }

})

答案 2 :(得分:0)

这是我的Tab Panel View类( 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'
        }
    ]
}

});

答案 3 :(得分: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
}

});