在不同的Require.js模块中存储和加载变量

时间:2014-12-18 13:32:20

标签: 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: [],

        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常量,例如一些模型,再次打印国家代码,我得到一个空数组。如何将国家/地区代码存储在app-constants.js文件中并将其加载到不同的模块中?

1 个答案:

答案 0 :(得分:0)

不确定这是否会解决,但如何:

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;
});