如何计算全局变量?

时间:2018-05-13 12:47:22

标签: extjs

的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)

如何计算全局变量?

3 个答案:

答案 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