Extjs 7, Как передать динамические данные с одного контроллера на другой с помощью модели представления

Я новичок в сенче, я пытаюсь передать данные с одной страницы на другую, используя ctrl для ctrl, при нажатии кнопки отправки значения должны переноситься на другой просмотр страницы

Регистрация просмотра страницы

Ext.define('sample.view.register.Registration', {
extend: 'Ext.container.Container',
xtype: 'register',
itemId: 'registers',
layout: 'vbox',
requires: [
    'sample.view.register.RegistrationModel',
    'sample.view.register.RegistrationController',
    'sample.view.user.User',
    'sample.view.user.UserController',
    'sample.store.Personnel'
],
controller: 'register',
viewModel: 'register',
items: [
    {
        xtype: 'container',
        padding: 10,
        items: [{
            xtype: 'textfield',
            fieldLabel: 'User Name',
            name: 'nameReg',
            bind: {
                value: '{formData.nameReg}'
            }
        }, {
            xtype: 'textfield',
            name: 'password1',
            inputType: 'password',
            itemId: 'password1',
            fieldLabel: 'Password',
        },

        {
            xtype: 'button',
            text: 'Submit',
            handler: 'onSubmit'
        }],

    }],

**Reg Controller**
Ext.define('sample.view.register.RegistrationController', {
extend: 'Ext.app.ViewController',
alias: 'controller.register',
onSubmit: function () {
    var name = Ext.ComponentQuery.query('#nameReg')[0].lastValue;
    var pass = Ext.ComponentQuery.query('#password1')[0].lastValue;
    var age = Ext.ComponentQuery.query('#age')[0].lastValue;

    const da = this.getViewModel().get('formData');
     console.log(da) // im getting data here user, this data I want to carry to another page( User page )
 // Ext.create('sample.view.user.User', {
    //     id: Ext.id(),
    //     myVariable: store,
    // });

}
Страница регистрации модели

Ext.define('sample.view.register.RegistrationModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.register',
data: {
    formData: {
        nameReg: '',
        pass: null,
    },
    afterSubmit: true,
    //     names: 'sample',
    //     loremIpsum: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
},

});
Просмотр страницы пользователя
здесь я хочу показать данные, которые переносятся с рег-страницы и привязать значение к вводу

Ext.define('sample.view.user.User', {
xtype: 'user',
extend: 'Ext.form.Panel',
// extend: 'Ext.Container',
extend: 'Ext.container.Container',
itemId: 'userPage',
requires: [
    'sample.view.register.RegistrationController',
    'sample.view.register.RegistrationModel'
],

// viewModel: {
//     data: {
//         title: 'Default Title'
//     }
// },
// initComponent: function () {
//     if (this.title) {
//         console.log('==========', this.title)
//     }
// },


width: 600,
bodyPadding: 10,
// layout: 'form',
autoScroll: 'true',

items: [{
    xtype: 'textfield',
    fieldLabel: 'User Name',
    name: 'nameReg',
    itemId: 'nameReg',
    bind: {
        value: '{formData.nameReg}'
    }
}]

});
здесь я пробовал с моделью просмотра, но я не понимаю, как это точно работает, дайте мне знать, если вам нужна дополнительная информация об этом, заранее спасибо


person Mitukula Venkatesh    schedule 29.06.2020    source источник


Ответы (1)


В основном есть два варианта, которые я использую в таких случаях:

  1. Совместное использование модели представления: всякий раз, когда это имеет смысл, используйте одну модель представления для двух связанных представлений. С помощью привязки данных первое представление записывает данные в модель представления, а второе представление считывает те же данные. Таким образом, вы объединяете эти две модели представления в одну.
  2. Иметь общую модель представления в качестве родительского класса для обеих моделей представлений, содержащую данные, которые используются обоими представлениями. Давайте назовем это «App.UserModel». Затем две ваши модели представления должны расширять «App.UserModel» (вместо «Ext.app.ViewModel»). Опять же, простая привязка данных должна отлично справляться с этой задачей.
person Hildirim    schedule 29.06.2020
comment
спасибо за ответ, можете ли вы поделиться кодом для вариантов 2, мне очень сложно понять, что именно должно делать - person Mitukula Venkatesh; 29.06.2020