ExtJS4:从Ext.Application访问全局变量

vah*_*san 3 extjs extjs4

我想加载一些特定于应用程序的设置,并在加载应用程序时将它们保存为全局变量.我已经找到了如何在这里创建和访问全局变量.

这是我的app.js样子:

Ext.application({
    stores: [
        ...
    ],
    views: [
        ...
    ],
    autoCreateViewport: true,
    name: 'MyApp',
    controllers: [
        'DefaultController'
    ],

    launch: function() {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

是否可以在launch: function()块内设置这些变量?如果没有,有没有其他选择?

Joh*_*est 6

您还可以创建单身人士:

Ext.define('MyApp.util.Utilities', {
     singleton: true,

     myGlobal: 1
});
Run Code Online (Sandbox Code Playgroud)

在您的应用中:

Ext.application({
    stores: [
        ...
    ],
    views: [
        ...
    ],
    autoCreateViewport: true,
    name: 'MyApp',
    controllers: [
        'DefaultController'
    ],

    requires: ['MyApp.util.Utilities'], //Don't forget to require your class

    launch: function() {
        MyApp.util.Utilities.myGlobal = 2; //variables in singleton are auto static.
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 是的,但是如果你`Ext.ceate()`一个带有`singleton:true`的类你将没有新的实例,所以使用它更安全. (3认同)