我的odata从CDS视图返回这个值:
investmentDone = 18 AND totalRevenue = 10
我想从这些值中计算利润并将其存储在变量 (profit = investmentDone - totalRevenue) 中,以便我可以在我的视图中使用它来显示值。任何帮助如何在控制器中执行此计算?
提前Tx!答案 0 :(得分:1)
如果要在UI层计算利润,执行此操作的理想方法是使用自定义格式化程序,因为这是推荐的方法。 https://sapui5.netweaver.ondemand.com/#docs/guide/0f8626ed7b7542ffaa44601828db20de.html
您可以添加以下代码。
对于XML视图
<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代码,创建一个新文件model / formatter.js
sap.ui.define([], function () {
"use strict";
return {
calcProfit: function (iInvestmentDone, iTotalRevenue) {
return (iInvestmentDone - iTotalRevenue);
}
};
});
答案 1 :(得分: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模型并将模型设置为表。