如何在 SAPUI5 中针对 odata 服务更正绑定浮点数 属性?

How to correct bind a float property against odata service in SAPUI5?

几乎每个版本的 SAPUI5 我都遇到 sap.ui.model.type.Float 数据类型与 ODataModel 组合的奇怪问题。

见老post:How to handle number format of OData Edm.Decimal in sapui5 correct?

后来我构建了一个 hack 来解决问题 (SAPUI5 1.26.x),它看起来像这里提到的那样:

效果很好。现在我尝试升级到 1.28.12 和 sap.ui.model.odata.v2.ODataModel 模型。

我有以下情况:

我使用以下类型绑定控件:

return new sap.ui.model.type.Float({
    maxFractionDigits : 2,
    minFractionDigits: 2,
    source : {
        maxFractionDigits : 2,
        minFractionDigits: 2                        
    }
});

根据文档,source 用于定义模型格式。

如果我将它用作 posted,post 将使用逗号作为分隔符而不是点。

如果我不使用它,模型将收到一个浮点数而不是字符串(与 1.26.x 相同的问题)。

Edm.DecimalFloat 数据类型绑定的正确解决方案是什么,以便我可以在浏览器的用户区域设置中输入数字,并且它始终会正确发送到服务器?

同时我检测到以下文档: https://openui5beta.hana.ondemand.com/#docs/guide/91f30dbf6f4d1014b6dd926db0e91070.html

如果 link 不起作用,请在 https://openui5beta.hana.ondemand.com

中搜索 sap.ui.model.type.Float

我现在使用以下代码:

            return new sap.ui.model.type.Float({
                maxFractionDigits : 2,
                minFractionDigits: 2,
                source : {
                    groupingSeparator: ",",
                    decimalSeparator: ".",
                    groupingEnabled: false,
                    maxFractionDigits : 2,
                    minFractionDigits: 2                        
                }
            });

只显示 Edm.Decimal 看起来很复杂,不确定是否有更简单的解决方案?我希望客户端 sap.ui.model.odata.v2.ODataModel 更聪明,但也许不是?

我一直在努力解决你遇到的同样问题,并且无法通过研究找到合适的解决方案。到目前为止,我正在使用以下方法从输入字段中解析出所需的字符串,该字符串的值类型为 sap.ui.model.type.Float:

new sap.ui.model.odata.type.Decimal().parseValue(input.value, "float");

之后,您可以将此字符串分配给您想要create/update的OData条目。

不确定这是否是一个好的解决方案,因为我是 sapui5 的新手...只是想分享我对这个主题的看法。