gpt4 book ai didi

extjs - 覆盖 Ext.util.Format.thousandSeparator 除非格式化货币

转载 作者:行者123 更新时间:2023-12-02 11:24:25 25 4
gpt4 key购买 nike

我正在尝试覆盖 Ext.util.Format.decimalSeparator 和 HundredSeparator。因此,在我的应用程序中,当我将语言更改为西类牙语并尝试使用此函数 Ext.util.Format.number(1234,'$0,000') 时,它仍然会将数字转换为 1.234 而不是 1,234。

我希望,无论我选择什么语言,它应该始终将钱格式化为 $0,000 格式,而不是使用我选择的区域设置,例如,绝不是 $0.000。我观察到如果我更改 Ext.util.Format 对象的数千分隔符,它工作正常。因此,我在Application.js中的launch函数中的Ext.Loader.loadScript回调函数中添加了以下代码,

        var utilFormatObj={};
utilFormatObj.thousandSeparator = ",";
utilFormatObj.decimalSeparator = ".";
Ext.override(Ext.util.Format, utilFormatObj);

但是,它似乎只在这个地方起作用,一旦它在网页上加载应用程序,它就会再次返回到thousandSeparator =“。”。我可以看到 ext-lang-es.js 文件具有设置这些属性的函数。任何人都可以建议我如何捕获应用程序是否完全加载到 webapge 上,然后在那里使用上面的代码。谢谢。

最佳答案

当您调用Ext.util.Format.number()时,您没有指定使用什么作为小数或千位分隔符,您只是指定精度,是否显示千位分隔符,以及是否用零填充精度。

The documentation for Ext.util.Format.number状态:

The format string must specify separator characters according to US/UK conventions ("," as the thousand separator, and "." as the decimal separator)

因此,如果您想在不同区域设置中显示数字,则必须在调用 Ext.util.Format.numberExt.util.Format 之前运行更改默认分隔符的代码.货币.

    var value = 202020.20, format = "0,000.0000";
// Print in Spanish
Ext.util.Format.thousandSeparator = ".";
Ext.util.Format.decimalSeparator = ",";
alert(Ext.util.Format.number(value, format));

// Print in Swedish French
Ext.util.Format.thousandSeparator = "'";
Ext.util.Format.decimalSeparator = ",";
alert(Ext.util.Format.number(value, format));

// Print in English
Ext.util.Format.thousandSeparator = ",";
Ext.util.Format.decimalSeparator = ".";
alert(Ext.util.Format.number(value, format));

如果您确实想指定货币应始终使用句点作为千位分隔符,但仍让 Ext.util.Format.number 使用所选区域设置的分隔符,则可以使用以下技巧。

function formatMoney(amount, sign, decimals, end) {
// Save the thousand separator
var thousandSep = Ext.util.Format.thousandSeparator;
Ext.util.Format.thousandSeparator = '.';
var formatted = Ext.util.Format.currency(amount, sign, decimals, end);
// restore the thousand separator
Ext.util.Format.thousandSeparator = thousandSep;
return formatted;
}

上述代码片段的示例:https://fiddle.sencha.com/#fiddle/9vm

关于extjs - 覆盖 Ext.util.Format.thousandSeparator 除非格式化货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690026/

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