繁体   English   中英

在 JS 中将 OData V2 Edm.Decimal 值转换为与语言环境相关的十进制数

[英]Converting OData V2 Edm.Decimal value to a locale-dependent decimal number in JS

我正在尝试转换字符串数字并将其显示为十进制数字。 例如: "3125000.000"3,125,000.00

在 XML 中,我写道:

<Text xmlns="sap.m"
  id="text13"
  text="{
    path: 'Amount',
    type: 'sap.ui.model.odata.type.Decimal',
    constraints: {
      scale: 2
    }
  }"
/>

它运作良好。 如何从 Controller.js 显示该值?

转换后的值是string类型还是number类型并不重要。 我只想用逗号和.00显示该值

可以在 JS 中实现与数据类型的属性绑定,类似于 XML 变体,通过将类型分配给type但在其构造函数中传递设置:

基本类型Edm.Decimal构造Edm.Decimal
new sap.ui.model.odata.type.Decimal(oFormatOptions?, oConstraints?)

new Text({
  text: {
    path: "Amount",
    type: new ODataDecimalType({ // required from "sap/ui/model/odata/type/Decimal"
      // Optional format options: ...
    }, {
      // Optional constraints:
      scale: 2
    }),
  }
});

这是一个演示:

 sap.ui.getCore().attachInit(() => sap.ui.require([ "sap/m/Title", "sap/ui/model/odata/type/Decimal", ], (Title, ODataTypeDecimal) => new Title({ text: { value: "3125000.000", // sample OData decimal value from the model type: new ODataTypeDecimal({}, { scale: 2 }), }, titleStyle: "H1", }).addStyleClass("sapUiTinyMargin").placeAt("content")));
 <script id="sap-ui-bootstrap" src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" data-sap-ui-libs="sap.ui.core,sap.m" data-sap-ui-theme="sap_fiori_3_dark" data-sap-ui-async="true" data-sap-ui-compatversion="edge" data-sap-ui-xx-waitfortheme="init" ></script><body id="content" class="sapUiBody"></body>


数据类型也可以在属性绑定之外独立使用:

// ODataDecimalType required from "sap/ui/model/odata/type/Decimal"
const myType = new ODataDecimalType({}, { scale: 2 });
myType.formatValue("3125000.000", "string") // returns: "3,125,000.00"

API 参考: sap.ui.model.odata.type.Decimal

如果用户的当前语言环境是例如de-DE ,则返回值将是"3.125.000,00"


注意:框架会根据用户在浏览器设置中的偏好自动检测区域设置(请参阅识别语言代码/区域设置)。 除非绝对需要,否则我建议对其进行硬编码。

我认为这个文档回答了你的问题(如果我理解正确的话)

从文档:

 var oFormatOptions = { minIntegerDigits: 3, maxIntegerDigits: 5, minFractionDigits: 2, maxFractionDigits: 4 }; // NumberFormat required from "sap/ui/core/format/NumberFormat" var oFloatFormat = NumberFormat.getFloatInstance(oFormatOptions); oFloatFormat.format(1.1); // returns 001.10 oFloatFormat.format(1234.567); // returns 1,234.567

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM