ExtJS将变量从控制器传递到视图

ExtJS将变量从控制器传递到视图,extjs,extjs4,extjs4.1,Extjs,Extjs4,Extjs4.1,我有一个基本控制器,它有一个用户对象,在登录成功后和用户数据绑定。此时,我需要传递用户对象的视图已经实例化。这是我的基本控制器: Ext.define('App.abstract.app.Controller', { extend: 'Ext.app.Controller', user: {} // user object that can be accessed by any controller }); 现在,这里是我的Main.js控制器,它从

我有一个基本控制器,它有一个用户对象,在登录成功后和用户数据绑定。此时,我需要传递用户对象的视图已经实例化。这是我的基本控制器:

Ext.define('App.abstract.app.Controller', {
        extend: 'Ext.app.Controller',

        user: {} // user object that can be accessed by any controller

    });
现在,这里是我的Main.js控制器,它从我的基本控制器扩展而来,实现了登录功能:

Ext.define('App.controller.Main', {
    extend: 'App.abstract.app.Controller',

    refs: [{
        ref: 'main',
        selector: 'app-main'
    },
    {
        ref: 'header',
        selector: 'appheader'
    }],

    init: function (application) {
        this.control({
            "loginform": {
                loguser: this.onLoginUser
            },
            'app-main #logoutBtn': {
                //click: this.onLogoutUser
            }
        });
    },
    onLoginUser: function (form, values) {
        var me = this;
        values.password = App.util.MD5.encode(values.password);
        App.util.Ajax.request({
            url: '/api/Security/ValidateUser',
            jsonData: values,
            success: function (response, opts) {
                var obj = Ext.decode(response.responseText);
                if (obj.success) {

                    // sets the base controller user object so it can be available in all app
                    Ext.apply(me.user, obj.data);

                    me.getMain().layout.setActiveItem(1);

                    // HERE I WANT TO PASS MY me.user TO MY MAIN.js VIEW 

                }
            }
        });
    },

    }
});
这是我的Main.js视图,我需要在其中获取用户对象,我可以在我的页脚(南面板)中设置用户名

Ext.define('App.view.Main'{
扩展:“Ext.container.container”,
要求:[
“Ext.layout.container.Card”,
“Ext.layout.container.Border”,
“Ext.layout.container.Accordion”,
“Ext.form.Label”,
'App.view.login.LoginForm',
“App.view.Dashboard”,
“应用程序视图主面板”,
'App.view.Header',
'应用程序.视图.菜单.手风琴'
],
xtype:'应用程序主',
布局:{
类型:“卡片”
},
项目:[{
xtype:'容器',
布局:{
类型:“hbox”,
对齐:“拉伸”
},
默认值:{flex:1},
项目:[{
xtype:'组件'
}, {
xtype:'容器',
布局:{
键入:“vbox”,
对齐:“拉伸”,
},
默认值:{flex:1},
项:[{xtype:'component'},{xtype:'loginform'},{xtype:'component'}]
}, {
xtype:'组件'
}]
},
{
xtype:'面板',
布局:{
类型:“边框”
},
项目:[
{
xtype:“主菜单”,
宽度:250,
地区:“西部”
},
{
xtype:'appheader',
地区:“北部”
},
{
xtype:“主面板”,
地区:'中心'
},
{
xtype:'容器',
地区:'南',
项目:
[
{
xtype:'工具栏',
边距:“0”,
样式:“背景色:#3892D3;”,
项目:[
{
xtype:'displayfield',
id:'用户名',
fieldLabel:“用户名”,
宽度:100,
标签宽度:70,
样式:“颜色:#FFFFFF;”,
值:'这里我需要用户名'
}
]
}
]
}
]
}
]
});

有什么线索吗?

给你的显示字段一个itemId,然后更新它:me.getMain().down(“#someDisplayField”)。更新(me.user)此时是否已呈现主视图?
Ext.define('App.view.Main', {
    extend: 'Ext.container.Container',

    requires: [
        'Ext.layout.container.Card',
        'Ext.layout.container.Border',
        'Ext.layout.container.Accordion',
        'Ext.form.Label',
        'App.view.login.LoginForm',
        'App.view.Dashboard',
        'App.view.MainPanel',
        'App.view.Header',
        'App.view.menu.Accordion'
    ],


    xtype: 'app-main',
    layout: {
        type: 'card'
    },
    items: [{
        xtype: 'container',
        layout: {
            type: 'hbox',
            align: 'stretch'
        },
        defaults: { flex: 1 },
        items: [{
            xtype: 'component'
        }, {
            xtype: 'container',
            layout: {
                type: 'vbox',
                align: 'stretch',
            },
            defaults: { flex: 1 },
            items: [{ xtype: 'component' }, { xtype: 'loginform' }, { xtype: 'component' }]
        }, {
            xtype: 'component'
        }]
    },
    {
        xtype: 'panel',
        layout: {
            type: 'border'
        },
        items: [
       {
           xtype: 'mainmenu',
           width: 250,
           region: 'west'
       },
       {
           xtype: 'appheader',
           region: 'north'
       },
       {
           xtype: 'mainpanel',
           region: 'center'
       },
       {
           xtype: 'container',
           region: 'south',
           items:
               [
                    {
                        xtype: 'toolbar',
                        margin: '0',
                        style: 'background-color:#3892D3;',
                        items: [
                            {
                                xtype: 'displayfield',
                                id: 'username',
                                fieldLabel: 'User Name',
                                width: 100,
                                labelWidth: 70,
                                style: 'color:#FFFFFF;',
                                value: '<span style="color:#FFFFFF;font-size:12px">HERE I NEED THE USER NAME</span>'
                            }
                        ]
                    }
               ]
       }
        ]
    }
    ]
});