它们的示例和代码仅在传递如何仅使用所需模块的过程中提及。

例如,如果您需要日期格式化程序,那么如何使用它?

您是将其与globalize.js一起修改还是将其单独加载(类似于加载cldr文件)?

例如:

<html>
     <head>
        <script type="text/javascript" src="../js/globalize/globalize.js"></script>
     </head>
     ...

加载globalize.js就好了。但是我没有加载日期模块,所以
未定义代码Globalize.dateFormat中的某处。

但是如果我这样做,则要获取日期模块,如示例之一所示。
 <html>
     <head>
        <script type="text/javascript" src="../js/globalize/globalize.js"></script>
        <script type="text/javascript" src="../js/globalize/date.js"></script>
     </head>
     ...

根本不加载全局化;如果我尝试执行Globalize.locale(“us”),则Globalize未定义。

最佳答案

无需延迟加载date.js,因此我以通常的方式在 header 中指定了它。我确实将其下移了很多,这可能使一些先决条件有时间加载。

var locLoaded = null;
function loadGlobalize(locale) {
  var loc = util.fixNoE(locale, "en");

  var codes = [
    'ar', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en-001', 'en-AU', 'en-CA',
    'en-GB', 'en-HK', 'en-IN', 'es', 'fi', 'fr', 'he', 'hi', 'hr',
    'hu', 'it', 'ja', 'ko', 'nb', 'nl', 'pl', 'pt', 'pt-PT', 'ro', 'ru',
    'sk', 'sl', 'sr', 'sv', 'th', 'tr', 'uk', 'vi', 'zh', 'zh-Hant'
  ];

  if (codes.indexOf(loc) < 0) {
    var baseLoc = loc.split('-')[0];
    var index = codes.indexOf(baseLoc);
    loc = (index > -1 ? baseLoc : "EN");
  }

  if (loc != locLoaded) {

    var files = [
      "../globalize/supplemental/likelySubtags.json",
      "../globalize/supplemental/timeData.json",
      "../globalize/supplemental/weekData.json",
      "../globalize/main/" + loc + "/ca-gregorian.json",
      "../globalize/main/" + loc + "/numbers.json",
      "../globalize/main/" + loc + "/dateFields.json"
    ];

    var fileCount = files.length;
    files.forEach(function(f) {
      $.getJSON(f, function(data) {
        fileCount--;
        Globalize.load(data);
        if (fileCount == 0) {
          //wait until the last file is loaded to specify the locale
          Globalize.locale(loc);
        }
      });
    });
    locLoaded = loc;
  }
}

loadGlobalize(window.navigator.userLanguage || window.navigator.language);

在我的应用中,此代码位于已加载DOM和jQuery的代码块中。有两件事与导致此问题的globalize.js文档不同:
  • 您必须执行$ .getJSON()而不是文档示例中指定的$ .get()。
  • 如果在加载适当的数据文件之前运行Globalize.locale(),则不会获得有效的日期格式化程序对象。
  • 关于javascript - jQuery全局化:如何将我需要的模块添加到项目中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23144104/

    10-09 20:51