的LoginController:
var AppConstants = Ext.widget("AppConstants"); AppConstants.setGLOBAL_id_user(id_user);
App:
var AppConstants = Ext.widget("AppConstants"); console.log(AppConstants.getGLOBAL_id_user());
控制台: (an empty string)
如何计算全局变量?
答案 0 :(得分:2)
Ext.widget()
都会创建某个类的新实例。
您想要的是不会创建新实例的内容。
对于代码的最小更改,您可以在Ext.AppConstants = Ext.widget('Appconstants')
中Application.init()
进行操作,然后立即访问Ext.AppConstants
{。}}。
答案 1 :(得分:0)
您可以在 ExtJS 中使用singleton
课程的最佳方式。使用单例类,您可以在需要时访问整个应用程序中的所有变量。
在这个FIDDLE
中,我使用singleton
类创建了一个演示。希望这有助于/指导您实现您的要求。
CODE SNIPPET
Ext.application({
name: 'Fiddle',
launch: function () {
//{singleton: true,} When set to true, the class will be instantiated as singleton.
Ext.define('AppConstants', {
alternateClassName: 'AppConstants',
singleton: true,
config: {
GLOBAL_id_user: 'Demo_123'
},
constructor: function (config) {
this.initConfig(config);
}
});
Ext.create({
xtype: 'panel',
title: 'Demo',
bodyPadding: 15,
items: [{
xtype: 'button',
text: 'Set value',
margin: '0 15',
handler: function () {
//we set value using setter of singleton.
Ext.Msg.prompt('Set GLOBAL_id_user', 'Please enter GLOBAL_id_user value', function (btn, text) {
if (btn == 'ok') {
AppConstants.setGLOBAL_id_user(text);
}
});
}
}, {
xtype: 'button',
text: 'Get value',
handler: function () {
//we get value using getter of singleton.
Ext.Msg.alert('GLOBAL_id_user value is ', AppConstants.getGLOBAL_id_user());
}
}],
renderTo: Ext.getBody()
});
}
});
答案 2 :(得分:0)
只需创建一个全局单例
Ext.define("MyApp.globals", {
singleton: true,
id_user: 0
});
然后使用MyApp.globals.id_user
http://docs.sencha.com/extjs/6.5.3/classic/Ext.Class.html#cfg-singleton