Sencha Touch: как передать данные из представления в контроллер и из контроллера в следующее представление

Я хочу передать идентификатор из Tabview (myView1) в Controller(theController), а затем я хочу, чтобы этот класс Controller передал данные другому Tabview (myView2) на той же панели. У кого-нибудь есть идея, как я могу это сделать?


person Arsalan    schedule 08.10.2013    source источник
comment
привет, я считаю, что идентификаторы - это уникальные объекты представления, к которым можно получить глобальный доступ для использования по мере необходимости.   -  person codebreaker    schedule 08.10.2013
comment
@Mureinik, см. ответ ниже   -  person Arsalan    schedule 11.10.2013


Ответы (4)


Вы можете сделать так

в вашем контроллере:

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

в MyView1, когда вы хотите указать идентификатор, просто выполните

this.fireEvent(yourId);
person Alytrem    schedule 08.10.2013

Это мой класс представления панели вкладок (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'
        }
    ]
}

});

person Arsalan    schedule 11.10.2013

Это мой контроллер:

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
}

});

person Arsalan    schedule 11.10.2013
comment
Событие, хотя я хотел бы также отправить запрос Ajax - так же, как и данные JSON, которые я получаю, но я все еще не могу передать эти данные - person Arsalan; 11.10.2013

person    schedule
comment
Привет Ратор! Я получил ваш ответ, но не знаю, как получить значения в myView2. Пробовал использовать tpl, но записи еще не было. Можете ли вы сказать, как получить эту запись, переданную методом setRecord(). Для получения дополнительной информации я могу работать с DataListView. Но это не то, что я хочу. Заранее спасибо. - person Arsalan; 11.10.2013