Javascript 在不同的Require.js模块中存储和加载变量
我正在使用backbone.js和require.js应用程序。我有一个app-constants.js文件。它存储许多静态变量,但也存储国家/地区iso代码:Javascript 在不同的Require.js模块中存储和加载变量,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在使用backbone.js和require.js应用程序。我有一个app-constants.js文件。它存储许多静态变量,但也存储国家/地区iso代码: define(function (require) { 'use strict'; var AppConstants = { SESSION_TIMEOUT_DURATION: 300, COUNTRY_ISO_CODES: [], getCountryIsoCod
define(function (require) {
'use strict';
var AppConstants = {
SESSION_TIMEOUT_DURATION: 300,
COUNTRY_ISO_CODES: [],
getCountryIsoCodes: function () {
return this.COUNTRY_ISO_CODES;
},
setCountryIsoCodes: function (countries) {
this.COUNTRY_ISO_CODES = countries;
}
};
return AppConstants;
});
国家/地区的iso代码取决于浏览器的语言,因此会在应用程序启动后加载。因此,在获得浏览器的语言后,我将使用以下代码加载国家代码:
appConstants.setCountryIsoCodes(lookUpDataCountries);
如果我在setCountryIsoCodes()之后直接调用getCountryIsoCodes(),我会看到appConstants文件中设置了国家代码:
console.log('appConstants.getCountryIsoCodes() are ');
console.log(appConstants.getCountryIsoCodes());
输出为:
appConstants.getCountryIsoCodes() are
["CA", "MX", "GT",
etc etc
但是,如果我在另一个模块(例如某些型号)中加载应用程序常量,并再次打印国家代码,则会得到一个空数组。如何将国家代码存储在app-constants.js文件中,并将其加载到不同的模块中?不确定这是否能解决问题,但如何:
define(function (require) {
'use strict';
var COUNTRY_ISO_CODES: [];
var AppConstants = {
SESSION_TIMEOUT_DURATION: 300,
getCountryIsoCodes: function () {
return COUNTRY_ISO_CODES;
},
setCountryIsoCodes: function (countries) {
COUNTRY_ISO_CODES = countries;
}
};
return AppConstants;
});
好的,所以你们用常量将模块加载到模型模块中,但你们确定已经调用了
getCountryIsoCodes
吗?是的,我确定。用户登录后,将加载应用程序常量模块。我认为这与垃圾收集有关,“所以它是在应用程序启动后加载的”-它加载到了什么..?我感觉要么你在设置它之前调用getCountryIsoCodes
,要么你稍后将它设置回[]
。。。或者页面已刷新没有即时消息,我在其中调用应用程序常量的模型将在应用程序生命周期中的更晚时间使用