登录控制器:
var AppConstants = Ext.widget("AppConstants"); AppConstants.setGLOBAL_id_user(id_user);
应用程序:
var AppConstants = Ext.widget("AppConstants"); console.log(AppConstants.getGLOBAL_id_user());
安慰: (an empty string)
如何计算全局变量?
登录控制器:
var AppConstants = Ext.widget("AppConstants"); AppConstants.setGLOBAL_id_user(id_user);
应用程序:
var AppConstants = Ext.widget("AppConstants"); console.log(AppConstants.getGLOBAL_id_user());
安慰: (an empty string)
如何计算全局变量?
Ext.widget()每次调用某个类时都会创建一个新实例。
您想要的是不会创建新实例的东西。
为了对您的代码进行最小的更改,您可以Ext.AppConstants = Ext.widget('Appconstants')在您现在使用的任何地方Application.init()进行然后访问。Ext.AppConstantsExt.widget('Appconstants')
只需创建一个全局单例
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
您可以在ExtJSsingleton中使用类的最佳方式。使用单例类,您可以在需要时访问整个应用程序中的所有变量。
在此FIDDLE,我使用singleton类创建了一个演示。希望这将帮助/指导您实现您的要求。
代码片段
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()
});
}
});