SAP UI5 - 如何将 HTML DOM 对象附加到 XML 视图

SAP UI5 - How to append HTML DOM Object to XML View

我正在尝试将 HTML DOM 对象附加到 XML 视图,但它没有显示。

我正在尝试使用 returns 我 XML 的 BAPI 服务,然后使用 XSLT

将其转换为 HTML DOM ]

resultDocument 是一个 documentFragment paneXml 是面板 id

if (document.implementation && document.implementation.createDocument) {
                    xsltProcessor = new XSLTProcessor();
                    xsltProcessor.importStylesheet(xsl);
                    resultDocument = xsltProcessor.transformToFragment(xml, document);
                    var viewHtml = new sap.ui.core.HTML().setDOMContent(resultDocument);
                    this.getView().byId('panelXml').placeAt('viewHtml');
             }

XML 查看 <Panel id="panelXml" width="100%" style="display:block;" ></Panel>

这里:

var viewHtml = new sap.ui.core.HTML().setDOMContent(resultDocument);

您创建控件,然后将其添加到要显示的视图中。

这里:

this.getView().byId('panelXml').placeAt('viewHtml');

您将控件(您的面板)放入 html 标签 'viewHtml'(如果您未定义标签,标签可能根本不存在),而不是放入您之前的定义了 viewHtml 控件,说起来,你不能 placeAt() 你的控件变成另一个控件(placeAt() 适用于 html 标签)。

您应该将您的 viewHtml 控件添加到您的视图中(控件应该事先在您的视图中定义。然后您只需通过其 ID 调用它并为其分配新内容)。

如果你想将你的面板添加到 resultDocument,你不应该在你的视图中添加它,而是在你创建这个 resultDocument 之后在控制器中添加(我不确定它是否'虽然会工作)。

一般来说,如果你想追加HTML DOM对象到XML视图,你需要在视图中定义你的控件(我没有使用xml views 很多,所以下面的查看代码可能不是100%准确):

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
controllerName="myApp" xmlns:html="http://www.w3.org/1999/xhtml">
<Page>
  <content>
    <html:div id="htmlId">hihi</html:div>
  </content>
</Page>
</mvc:View>

然后,在控制器中:

var resultDocument = xsltProcessor.transformToFragment(xml, document);
this.getView().byId("htmlId").setDOMContent(resultDocument);

对于 fiori 应用程序 SAPUI5 1.44,此 link http://jsfiddle.net/C4FW7/ 有效。您只需执行以下操作

<App>
     <Page title="SAPUI5 App">
         <core:HTML id="html" content="hello"/>
     </Page>
  </App>

并在您的控制器中

sap.ui.controller("my.own.controller", {
    onInit: function(){
         var that=this;
         $.get( "/8rmAU/show/light", function( data ) {
            that.getView().byId('html').setContent(data);
        });
    }
});