gpt4 book ai didi

javascript - Globalize.js E_DEFAULT_LOCALE_NOT_DEFINED 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:40 25 4
gpt4 key购买 nike

我正在开发一个使用 Globalize.js 的 ASP MVC 应用程序。在 _Layout.cshtml 我添加了这段代码

<script>
(function () {
$(function () {
$.when(
$.getJSON("@Url.Content("~/Scripts/cldr/supplemental/likelySubtags.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/main/fr/numbers.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/supplemental/numberingSystems.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/main/fr/ca-gregorian.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/main/fr/timeZoneNames.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/supplemental/timeData.json")"),
$.getJSON("@Url.Content("~/Scripts/cldr/supplemental/weekData.json")")
).then(function () {
// Normalize $.get results, we only need the JSON, not the request statuses.
return [].slice.apply(arguments, [0]).map(function (result) {
return result[0];
});
}).then(Globalize.load).then(function () {
Globalize.locale("fr");
});
});
})();
</script>

它正在工作。但是当我尝试在 $(document).ready 或 $(window).load 的其他页面中使用它时,出现错误 JavaScript: E_DEFAULT_LOCALE_NOT_DEFINED: Default locale has not been defined。

似乎 The Globalize 尚未加载。

最佳答案

我知道这是一个非常古老的故事,但我偶然发现了它,答案很简单 - 而不是在 $(document).ready 事件上做你想做的事情,你必须等待 globalize 完成加载资源,然后再做你的事情。

执行此操作的简单方法是在加载 globalize 后触发您自己的事件,如下所示:

function loadcldr() {
var currentCultureCode = $("#hfTwoCharsCultureCode").val();
var publicCdnGlobalizeCompleteUrl = "/Resources/cldr/";

$.when(
$.get(publicCdnGlobalizeCompleteUrl + "main/" + currentCultureCode + "/ca-gregorian.json"),
$.get(publicCdnGlobalizeCompleteUrl + "main/" + currentCultureCode + "/numbers.json"),
$.get(publicCdnGlobalizeCompleteUrl + "main/" + currentCultureCode + "/currencies.json"),
$.get(publicCdnGlobalizeCompleteUrl + "supplemental/likelySubtags.json"),
$.get(publicCdnGlobalizeCompleteUrl + "supplemental/timeData.json"),
$.get(publicCdnGlobalizeCompleteUrl + "supplemental/weekData.json")
).then(function () {

// Normalize $.get results, we only need the JSON, not the request statuses.
return [].slice.apply(arguments, [0]).map(function (result) {
return result[0];
});

}).then(Globalize.load).then(function () {
Globalize.locale(currentCultureCode);
customNumberParser = Globalize.numberParser();

$(document).trigger("globalizeHasBeenLoadedEvent");
});
}

您感兴趣的行是 $(document).trigger("globalizeHasBeenLoadedEvent"); 因为这会触发自定义事件。

然后你可以等待那个事件发生然后做你的事情:

$(document).on("globalizeHasBeenLoadedEvent",
function () {
alert("I'm done loading globalize...");
});

希望它对将来的人有所帮助...(不是一旦我遇到问题并且我搜索了 SO 并找到了我自己的答案):-))

关于javascript - Globalize.js E_DEFAULT_LOCALE_NOT_DEFINED 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com