Extjs 重写Ext.util.Format.thousandSeparator,格式化货币时除外
我试图覆盖Ext.util.Format.decimalSeparator和千分表。因此,在我的应用程序中,当我将语言转换为西班牙语并尝试使用Ext.util.Format.number(1234,$0000')函数时,它仍然会将数字转换为1.234,而不是1234 我希望,无论我选择哪种语言,它都应该将货币格式设置为$0000格式,而不使用我选择的区域设置,例如,永远不要使用$0.000。我观察到,如果我更改Ext.util.Format对象的千分隔符,它就可以正常工作。因此,我在Application.js的launch function中的Ext.Loader.loadScript回调函数中添加了以下代码Extjs 重写Ext.util.Format.thousandSeparator,格式化货币时除外,extjs,extjs4,extjs4.1,extjs4.2,extjs-mvc,Extjs,Extjs4,Extjs4.1,Extjs4.2,Extjs Mvc,我试图覆盖Ext.util.Format.decimalSeparator和千分表。因此,在我的应用程序中,当我将语言转换为西班牙语并尝试使用Ext.util.Format.number(1234,$0000')函数时,它仍然会将数字转换为1.234,而不是1234 我希望,无论我选择哪种语言,它都应该将货币格式设置为$0000格式,而不使用我选择的区域设置,例如,永远不要使用$0.000。我观察到,如果我更改Ext.util.Format对象的千分隔符,它就可以正常工作。因此,我在Applic
var utilFormatObj={};
utilFormatObj.thousandSeparator = ",";
utilFormatObj.decimalSeparator = ".";
Ext.override(Ext.util.Format, utilFormatObj);
但是,它似乎只在这个地方起作用,一旦它将应用程序加载到网页上,它就会再次返回到千千分隔符=“.”。我可以看到ext-lang-es.js文件具有设置这些属性的函数。有谁能建议我如何捕捉应用程序是否完全加载到webapge上,然后在那里使用上面的代码。谢谢。我猜在构建应用程序进行部署后,您没有使用加载程序。通常,动态加载程序仅用于开发(因此您可以单独查看每个脚本),并且您可以在prod中使用更快的方法 您可以在Ext.define的回调上加载Ext覆盖:
Ext.define( className, data, [createdFn] )
其中createdFn是一个包含Ext覆盖的函数。如果在应用覆盖之前调用该Format对象,这种方法可能会适应竞争条件。为了确保自信,您可以添加另一个JS文件和覆盖(在加载Ext后,在加载应用程序代码之前),并确保在加载应用程序时包含该文件。当您调用
Ext.util.Format.number()
时,您没有指定要用作小数点或千位分隔符的内容,您只指定了精度,是否显示千位分隔符,是否用零填充精度
国家:
格式字符串必须根据美国/英国惯例指定分隔符(“,”作为千位分隔符,“.”作为十进制分隔符)
因此,如果要在不同的语言环境中显示数字,则必须在调用Ext.util.Format.number
或Ext.util.Format.currency
之前运行更改默认分隔符的代码
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;
}
上述代码段的示例: