我是SAPUI5 / OPENUI5的新手,我创建了一个javascript视图,该视图基本上可以导入多个图形和图表库,并且像实用程序一样,它可以创建多个带有图标的图形和图表。
下面是相同的代码 下面是Js(创建图形的sap ui JS视图)
jQuery.sap.require("some.graph.lib");
jQuery.sap.require("some.util.lib");
jQuery.sap.require("some.other.imports");
(function(){
sas.hc.ui.core.mvc.JSView.extend(" reports.dashboard.BaseDashboard.prototype.addCrossTab", {
metadata : {
properties : {
chartRequired:false,
tableDataRequired:false
},
},
rb: sap.ui.getCore().getLibraryResourceBundle("sas.csb.common"),
reports.dashboard.BaseDashboard.prototype.createGraphics = function (data) {
//This Function creates barchart, line charts and cross tab tables
return this.mainContentPane;
};
//Some other code to create and render graph
})();
我正在创建另一个视图,在该视图中导入上述视图并进行ajax调用,以便我可以创建图形和表格并将其作为base64编码的字符串发送到REST API,以在服务器端保存为PDF。
jQuery.sap.require("sas.cscommon.util.JSONUtil");
jQuery.sap.require({modName: "reports.dashboard.MeasureDashboard", type: "view"});
(function(){
var rb = sap.ui.getCore().getLibraryResourceBundle("sas.csb.backtesting");
//some other method
sas.csb.backtesting.ModelList.prototype.downloadModelReport = function(event) {
var id = "sample";
var oView = new reports.dashboard.MeasureDashboard(id, {
viewName: "reports.dashboard.MeasureDashboard",
chartrequired: true
} );
//Calling REST API to get data
oView.createGraphics(data);
}
如何在不向用户显示该javascript sapui5 oView对象的情况下将其转换为HTML元素,以便我可以将画布和其他图形转换为以64为基数的字符串,并将其传递给REST API以保存在服务器端?
我想从视图对象访问canvas html元素而不在屏幕上呈现视图。
我知道sapui5中有一个附加了sapui5控件和RenderManager的渲染器,但是它没有帮助。
答案 0 :(得分:0)
不幸的是,不推荐使用直接获取HTML的方法。但是您可以创建一个不在DOM中的临时元素。
var div = document.createElement("div");
var rm = sap.ui.getCore().createRenderManager();
rm.render(oView, div);
rm.destroy();
var sHTML = div.innerHTML;