Как выполнить ввод пользовательских вычислений в SAPUI5

#sapui5

#sapui5

Вопрос:

мне нужно выполнить вычисление умножения на основе пользовательского ввода. итак, пользователь должен ввести значение на входе A и на входе B, тогда на входе C автоматически будет вычислено это умножение между входными данными A и B. у кого-нибудь есть идеи о том, как это сделать в sapui5?

я попытался выполнить вычисление с использованием форматера для ввода значения C, но, похоже, это не сработало. после того, как я ввожу ввод B, на входе C нет значения

 <Label text= "Rate"/>
                <Input id ="Project Rate" value=""/>

                <Label text="Discount"/>
                <Input type="Number" id="inputB"/>

                <Label text="Total Rate"/>
                <Input id="inputC" enabled="false" 
                        value="{parts:[
                                        {path: '/ProjectRate'},
                                        {path: '/Discount'},
                                        {path: '/TotalRate'}],
                                        formatter: 'calcProjectRate'}"/>


calcProjectRate: function(ProjectRate, Discount, TotalRate) {
        if (ProjectRate amp;amp; Discount) {
            TotalRate =  ProjectRate * Discount / 100;
            return TotalRate;
        }
        return "0";
  

Комментарии:

1. Можете ли вы подготовить jsfiddle для примера кода? Вам нужно использовать событие изменения для запуска вычисления.

Ответ №1:

В вашем коде ошибка, вам необходимо проверить результат проверки кода IDE.

  • значения идентификатора не могут включать пробел, например «Скорость проекта»

Рабочий пример ниже (возможно, это не лучшее решение).

 sap.ui.getCore().attachInit(function() {
  "use strict";
  sap.ui.controller("MyController", {
    onInit: function() {

    }
  });
  sap.ui.xmlview({
    viewContent: jQuery("#myView").html()
  }).placeAt("content");
});

calcProjectRate = function() {
  ProjectRate = this.oView.byId("ProjectRate").getValue();
  Discount = this.oView.byId("inputB").getValue();
  TotalRate = 0;
  if (ProjectRate amp;amp; Discount) {
    TotalRate = ProjectRate * Discount / 100;
  }
  this.oView.byId("inputC").setValue(TotalRate);
}  
 <!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">

    <layout:MatrixLayout>
      <layout:rows>
        <layout:MatrixLayoutRow>
          <layout:MatrixLayoutCell backgroundDesign="Fill1" padding="None">
            <Input id="ProjectRate" value="" liveChange="calcProjectRate" />

            <Label text="Discount" />
            <Input type="Number" id="inputB" />

            <Label text="Total Rate" />
            <Input id="inputC" enabled="false" />

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


  </mvc:View>
</script>

<body class="sapUiBody">
  <div id="content"></div>
</body>