я имел следующий код для добавления пользовательских функций с помощью Globalize 0.x:Правильный путь расширения в Globalize 1.x
Globalize.parseFloatAcceptDotAndComma =
function (value, radix, cultureSelector) {
value = value.replace(Globalize.locale(lang).numberFormat['.'] === '.' ? ',' : '.', Globalize.locale(lang).numberFormat['.']);
return Globalize.parseFloat.call(this, value, radix, cultureSelector);
}
Поскольку API Globalize 1 плагиной отличается, я стремлюсь знать как добиться такого же результата в новой версии плагина?
Спасибо.
BTW, я включил этот метод в цепочку «then» после «then (Globalize.load)» - это правильный способ?
UPDATE: окончательная рабочая версия - благодаря @rxaviers
var lang = '@Thread.CurrentThread.CurrentUICulture.Name';
Promise.all([
// Core
fetch('/Scripts/cldr/supplemental/likelySubtags.json'),
// Date
fetch('/Scripts/cldr/main/' + lang + '/ca-gregorian.json'),
fetch('/Scripts/cldr/main/' + lang + '/timeZoneNames.json'),
fetch('/Scripts/cldr/supplemental/timeData.json'),
fetch('/Scripts/cldr/supplemental/weekData.json'),
// Number
fetch('/Scripts/cldr/main/' + lang + '/numbers.json'),
fetch('/Scripts/cldr/supplemental/numberingSystems.json')
])
.then(function(responses) {
return Promise.all(responses.map(function(response) {
return response.json();
}));
})
.then(Globalize.load)
.then(function() {
Globalize.parseFloatAcceptDotAndComma =
Globalize.prototype.parseFloatAcceptDotAndComma = function(value, options) {
// Assert that value and options are valid.
// Assert that this.cldr is present
if (value.indexOf('.') >= 0 && value.indexOf(',') >= 0) {
throw new Error('Both separators are present');
}
value = value.replace(/[,.]/, this.cldr.main('numbers/symbols-numberSystem-latn/decimal'));
return this.parseNumber(value, options);
}
})
.then(function() { Globalize.locale(lang); });
* Рафаэль *, спасибо. Yeap, я знаю, что это ограниченное решение с разделителями, это всего лишь конкретный случай, клиент попросил обработать те, и приложение поддерживает только норвежский и английский. – Alexander
О вашей окончательной рабочей версии ... Вы можете определить 'parseFloatAcceptDotAndComma' вне области ваших обещаний. Хотя, вы захотите сохранить свои обещания во всем остальном (a) получить CLDR, затем (b) загрузить CLDR и использовать Globalize. –