在java和C ++中,我们可以全局存储一个变量,并从项目的任何位置访问它的值。
说,我在一个名为Residence
的课程中,我将residenceNumber
INT
保存到名为houseNumberGlobalVariable
的全局变量。
现在,我可以从项目中的任何类访问houseNumberGlobalVariable
。以类似的方式,我可以使用EXTJS
中的全局变量。
我需要从一个类中设置一个值,然后从另一个类中访问它。 EXT JS中的等价物是什么。我不认为EXTJS中有一个全局变量概念,但它的等价物是什么?
答案 0 :(得分:16)
创建一个特殊类并将所有global
变量放在那里。
Ext.define('MyApp.global.Vars', {
singleton: true,
....
houseNumberGlobalVariable: undefined
});
这样,如果您需要在代码中的任何位置访问它,请使用MyApp.global.Vars.houseNumberGlobalVariable
答案 1 :(得分:3)
只需在app.js
中声明一个变量,它就会充当全局变量。
var globalVar;
您可以添加任何内容,例如
globalVar.myStore = yourStore;
答案 2 :(得分:2)
根据您的应用程序,您可以声明您的全局变量。
场景1:在配置
中声明如果你打算使用getter / setter方法(即经常更改变量,那就去配置)
声明Appconstants
Ext.define('Practice.utilities.AppConstants', {
alias: 'widget.AppConstants',
config: {
mainVarTest: 'mainVarTest',
},
testvar: 'Testing value',
foo: 'bar',
meh: 42,
constructor: function(options) {
this.initConfig(options);
}
});
调用变量
var AppConstants = Ext.widget("AppConstants");
console.log(AppConstants.getMainVarTest());
场景2:在Singleton类中声明
如果您的应用程序需要全局变量,但它不会再在应用程序内部进行更改。此类仅帮助加载常量变量一次。 (即你不会改变变量)。此类型适合您的应用
声明
Ext.define('Practice.utilities.AppConstants', {
alias: 'widget.AppConstants',
singleton: true,
testvar: 'Testing value',
foo: 'bar',
meh: 42,
});
调用
var AppConstant=Practice.utilities.AppConstants;
console.log(AppConstant.foo);
场景3:声明为静态
静态变量是静态变量(与java完全相同)。使用静态变量的好处是变量的生命周期是无限期更长的时间,直到明确清除。
Ext.define("Practice.utilities.AppConstants", {
statics: {
mainVarTest: 'mainVarTest'
},
});
答案 3 :(得分:1)
我注意到这里遗漏的一件事是Sencha Architect程序中关于如何创建全局变量的解决方案。
转到项目检查器上的“应用程序”节点。接下来单击Configs搜索/过滤器框,这不仅用于搜索,还用于创建配置条目。当您第一次看到此框时,它将有一个预先填充的文本Filter Configs...
。
输入您的全局变量名称,您将注意到以下列表中没有找到任何内容,(如果在配置列表中找到该值,那么您已经拥有此变量或使用关键字)。文本框右侧和锁定图标是“添加”按钮。单击“添加”按钮将全局变量添加到应用程序中。
所以我们说我们已经创建了Foo
变量。您现在将在配置列表中看到一个条目。在这个条目的左边是一个省略号按钮,这是当前指定我们创建的新变量是一个字符串。单击按钮并将其更改为不同的“数字”字段。输入这个新变量的值,现在你已经完成,你有一个全局变量。
那么如何访问这个新创建的变量?这里是将全局填充到要使用的局部变量的代码示例。
var bar= MyApp.app.Foo;
“MyApp”参考是您正在创建的应用程序的应用程序name
配置设置。您可以通过在name
上过滤来在“应用程序”节点的配置设置中找到相同的值。
答案 4 :(得分:0)
var globalVar = {};在您的app.js文件中添加文件,即可正常使用