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);
});
}
});
我正在尝试将 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);
});
}
});