StepInput货币格式

时间:2017-01-24 11:15:58

标签: sapui5

我有一个StepInput定义如下。这个想法是步骤是一分钱,最小范围是0.01。当0.01为初始值时,当我单击+按钮时,控件中显示的值变为0.0并且控件被锁定。

我所看到的是0.01 +步骤0.01变为0.02。

我做错了什么?

<StepInput
        id="unitcost"
        value="0.01"
        min="0.01"
        max="999.99"
        step=".01"
        largerStep="0.5"
        width="10em"
        enabled="true"
        editable="true"
/>

通过运行此剪辑来查看它。

&#13;
&#13;
 sap.ui.getCore().attachInit(function() {
   "use strict";
   sap.ui.controller("MyController", {
     onInit: function() {
     
     }
   });
   sap.ui.xmlview({
     viewContent: jQuery("#myView").html()
   }).placeAt("content");

 });
&#13;
<!DOCTYPE html>
<title>SAPUI5</title>
<script src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-libs="sap.m" data-sap-ui-bindingSyntax="complex" data-sap-ui-compatVersion="edge" data-sap-ui-preload="async"></script>

<script id="myView" type="ui5/xmlview">
  <mvc:View controllerName="MyController" xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
  xmlns:layout="sap.ui.commons.layout" xmlns:f="sap.ui.layout.form">

    <layout:MatrixLayout>
    	<layout:rows>
      	<layout:MatrixLayoutRow>
        	<layout:MatrixLayoutCell backgroundDesign="Fill1" padding="None">

                    <StepInput
                            id="unitcost"
                            value="0.01"
                            min="0.01"
                            max="999.99"
                            step=".01"
                            largerStep="0.5"
                            width="10em"
                            enabled="true"
                            editable="true"
                    />

        	</layout:MatrixLayoutCell>
        </layout:MatrixLayoutRow>
      </layout:rows>
    </layout:MatrixLayout>
    
                    

  </mvc:View>
</script>

<body class="sapUiBody">
  <div id="content"></div>
</body>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

我测试了sap.m.StepInput,并且不可能使用小于0.1的步长。否则,将向上或向下舍入步骤。

0.54 will be rounded down to 0.5
0.56 will be rounded up to 0.6

请查看jsbin example

因此0.01向下舍入为0.

EDITED 2:32 240117:

这是简单的jsbin + counter

答案 1 :(得分:1)

issue已在GitHub上报告,并已被归类为错误。它也将在UI5中修复。但是,所提供的解决方法对于您的情况是不够的,因为建议在时间上仅使用一个小数位。我建议暂时覆盖默认行为。您可以在不更改原件的情况下执行此操作,如example

所示

该示例替换以下行:

vValuePlusStep.toFixed(1)

使用以下值,将value属性的小数考虑在内。

var decimals = vValuePlusStep.toString().split(".");
return vValuePlusStep.toFixed(decimals[1].length);

您可以将代码放在单独的文件中,将其放入app目录并使用sap.ui.define将其加载到主组件中。让我们假设您的应用程序位于&#34; app&#34;并命名文件override.js,您可以使用以下命令加载它:

sap.ui.define(["app/override"], function() { }); 

不需要将其传递给工厂函数。