2017-01-31 5 views
0

мой OData возвращает мне эти значения из CDS просмотра:Как выполнять математические функции, такие как сложение или вычитание значений, полученных из OData?

investmentDone = 18 И totalRevenue = 10

Я хочу, чтобы рассчитать прибыль от этих значений и сохранить его в переменной (прибыль = investmentDone - totalRevenue), так что я могу использовать его в своем представлении для отображения этого значения. Любая помощь, как я могу выполнить эти вычисления в контроллере?

Tx заранее!

ответ

1

Идеальный подход для этого, если вы рассчитываете прибыль на уровне пользовательского интерфейса, заключается в использовании пользовательского форматирования, поскольку это рекомендуемый подход. https://sapui5.netweaver.ondemand.com/#docs/guide/0f8626ed7b7542ffaa44601828db20de.html

Вы можете сделать это, добавив нижеприведенный код.

Для XML View

<Label text="{ 
parts:[{path:'investmentDone'}, 
     {path:'totalRevenue'} 
    ], 
formatter: '.formatter.calcProfit' 
}"> 
</Label> 

Контроллер JS

sap.ui.define([ 
    "sap/ui/core/mvc/Controller", 
    "sap/ui/model/json/JSONModel", 
    "sap/ui/demo/wt/model/formatter" 
], function (Controller, JSONModel, formatter) { 
    "use strict"; 
    return Controller.extend("sap.ui.demo.wt.controller.InvoiceList", { 
     formatter: formatter, 
     onInit : function() { 

      ... 

     } 
    }); 
}); 

Для кода Formatter, создать новую модель файла/formatter.js

sap.ui.define([], function() { 
    "use strict"; 
    return { 
     calcProfit: function (iInvestmentDone, iTotalRevenue) { 
       return (iInvestmentDone - iTotalRevenue); 

     } 
    }; 
}); 
+0

спасибо человеку, это сработало. Только один вопрос, если вы можете помочь мне больше, можете ли вы также рассказать мне, как я могу использовать это значение (iInvestmentDone - iTotalRevenue), чтобы установить цвет прогресса в управлении INDOCATOR ПРОГРЕССА? –

+1

Добро пожаловать. Для индикатора прогресса это сделать ' 'Также в вашем index.html добавьте это в объявление начальной загрузки для включения сложных привязок или знак% не будет visi ble: data-sap-ui-compatVersion = "edge" –

0

Я предлагаю лучше сделать расчет в заднем конце. Нет проблем, если вам нужно сделать это переднюю часть. Проверить ниже код:

var fnSuccess = function(oData,oResponse){ 
var TabData = { 
    Data : [] 
}; 
var DataArr; 

for(i=0;i<oData.results.length;i++){ 
    DataArr = { 
    profit : oData.results[i].investmentDone - oData.results[i].totalRevenue, 
    investmentDone : oData.results[i].investmentDone, 
    totalRevenue : oData.results[i].totalRevenue 
} 
TabData.Data.push(DataArr); 
} 

После этого кода просто связать эти данные модели JSON и установить модель в таблице.

+0

Я использую модель odata –