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

Sapui5 SAP UI5-如何将HTML DOM对象附加到XML视图,sapui5,Sapui5,我试图将一个HTMLDOM对象附加到XML视图中,但它没有显示出来 我试图找到一个BAPI服务,它返回一个XML,然后使用XSLT将其转换为HTMLDOM resultDocument是一个documentFragment paneXml是面板id if (document.implementation && document.implementation.createDocument) { xsltProcessor = new XSLT

我试图将一个HTMLDOM对象附加到XML视图中,但它没有显示出来

我试图找到一个BAPI服务,它返回一个XML,然后使用XSLT将其转换为HTMLDOM

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视图

此处:

var viewHtml = new sap.ui.core.HTML().setDOMContent(resultDocument);
创建控件,然后将其添加到要显示的视图中

在这里:

this.getView().byId('panelXml').placeAt('viewHtml');
将控件面板放入html标记“viewHtml”中如果未定义标记,则该标记可能根本不存在,也可能不存在于先前定义的viewHtml控件中,说到此,您无法将控件放入另一个控件placeAt works for html标记中

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

如果要将面板添加到resultDocument中,则不应在视图中执行,而应在创建此resultDocument后的控制器中执行。不过,我不确定它是否有效

通常,如果要将HTML DOM对象附加到XML视图,则需要在视图中定义控件。我不太使用XML视图,因此以下视图代码可能不是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>

对于fiori应用程序SAPUI5 1.44,此链接http://jsfiddle.net/C4FW7/ 作品你只需要做以下事情

<App>
     <Page title="SAPUI5 App">
         <core:HTML id="html" content="hello"/>
     </Page>
  </App>
<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);
        });
    }
});