Javascript SAPUI5-数字格式本地化

Javascript SAPUI5-数字格式本地化,javascript,jquery,localization,sapui5,Javascript,Jquery,Localization,Sapui5,我有一个问题与不同语言中小数的数字格式有关。 对于货币控制,系统根据URL参数中的语言采用正确的格式; ?sap ui语言=DE或?sap ui语言=US 对于具有type=Number属性的输入字段,无论语言设置如何,始终将其用作小数分隔符。 这个问题有解决办法吗? 我填充了一个动态sap.ui.table(针对行和列),有些行具有数字字段,有些行作为文本字段,因此我从后端动态发送dataformat,如下所示 temp = new sap.m.Input(sColumnId + index,

我有一个问题与不同语言中小数的数字格式有关。 对于货币控制,系统根据URL参数中的语言采用正确的格式;
?sap ui语言=DE
?sap ui语言=US

对于具有
type=Number
属性的输入字段,无论语言设置如何,始终将其用作小数分隔符。 这个问题有解决办法吗? 我填充了一个动态sap.ui.table(针对行和列),有些行具有数字字段,有些行作为文本字段,因此我从后端动态发送dataformat,如下所示

temp = new sap.m.Input(sColumnId + index,{  value:"{path: '" + sColumnId + "'}" , type:"{DATATYPE}",  textAlign:"Right", liveChange:[handle_livechange,this], change:[handle_change, this] , editable:"{path:'EDITABLE', type:'sap.ui.model.odata.type.String'}" }
 type:'sap.ui.model.type.Float', formatOptions : {   groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2}}"
由于有些行是基于文本的,我不能像下面那样硬编码格式化程序

temp = new sap.m.Input(sColumnId + index,{  value:"{path: '" + sColumnId + "'}" , type:"{DATATYPE}",  textAlign:"Right", liveChange:[handle_livechange,this], change:[handle_change, this] , editable:"{path:'EDITABLE', type:'sap.ui.model.odata.type.String'}" }
 type:'sap.ui.model.type.Float', formatOptions : {   groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2}}"
我尝试了自定义格式化程序,但在动态表上找不到我的格式化程序函数。 我尝试了onChange方法来动态格式化,但在这种情况下,我的javascript计算不起作用

如果我可以通过表达式绑定基于行值控制格式化选项,它也会解决我的问题,但下面的代码不起作用。

temp = new sap.m.Input(sColumnId + index,{  value:"{path: '" + sColumnId + ", =${DATATYPE} === 'Number' ? type:'sap.ui.model.type.Float', formatOptions : {   groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2} : type:'sap.ui.model.type.String' }"

这种方法对我有效: 根据区域设置定义格式,例如。, 在格式化程序文件中:

        sap.ui.define([
            "sap/ui/core/format/NumberFormat"
        ], function (NumberFormat) {     
        var oFloatNumberFormat = NumberFormat.getFloatInstance({
                    maxFractionDigits: 2,
                    minFractionDigits : 2,
                    groupingEnabled: true
                } , sap.ui.getCore().getConfiguration().getLocale());
        }


        return {
                 floatFormat: function(value){
                 return oFloatNumberFormat.format(value);
            },
    }
});
现在,您要在哪里使用它:

var MyVar= new sap.m.Input({
            value: {
                path: "..../amount" ,
                formatter : function(amount) {
                    return yourdefinedname.floatFormat(amount);
                }
             }
          });

后端可以在{DATATYPE}属性中返回哪些值?它是eithet数字或文本。这两种格式都很好,但当它是数字时,系统会将十进制分隔符作为点,而不管语言设置如何。为什么不更简单地使用它呢?这将自动采用区域设置来构建正确的分隔符。在同一列中,我有不同的格式。例如,第1行第1列是文本格式,而第2行第2列是数字格式,这就是为什么我试图通过使用本地化来排列小数。仅“sap.ui.model.type.Currency”支持本地化。但是,由于您有混合行(字符串/数字),您可能必须切换到“sap.ui.model.type.String”,编写一个解析器并将其附加到submit Events,这会破坏双向绑定!