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