我有一个只有Html的视图:
<mvc:View
controllerName="myproduct.controller.report.Design"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
displayBlock="true">
<core:HTML content='<link rel="stylesheet" href="/css/design.css" />' />
<core:HTML id="content" />
</mvc:View>
我抓住了“内容”,以便我可以做JQuery的东西:
var $content = $controller.byId("content");
$content.setContent("<div></div>");
var p$Html = $.get(this.$api + "/getreport");
var afterrendering = function(){
var $content = $controller.byId("content");
var $elem = $($content.getDomRef());
//Pop the preserved content back into the view
$elem.appendTo($controller.getView().getDomRef());
p$Html.then(function(){
$(p$Html.responseText).appendTo($elem);
var $grid = $elem.find('.report-grid');
$controller.attachPopupMenu($grid);
});
}
$content.attachAfterRendering(afterrendering);
现在这一切都非常聪明等等,但我不得不在$ elem.appendTo($ controller.getView()。getDomRef());
中加入攻击。通常当我举起一个弹出窗口时,View应该重新渲染,而且确实如此,但在openui5中,它会检测到PreserveContent并将原始渲染弹出到隐藏区域。当我的事件处理程序运行时,它会获得对隐藏事件的引用。
我期望Preserved Content应该在渲染之前存储,并在afterRendering事件之前自动恢复。
有人知道为什么我的Html会在ForceHidden区域内停留吗?
标记
答案 0 :(得分:0)
你究竟使用jquery dom操作的原因是什么?
我的第一个想法是在$content.setContent(p$Html.responseText)
处理程序中调用p$html.then()
并删除后续处理的内容。
如果HTML控件不支持您要显示的html,我会直接在视图中插入html:div
并使用它:
<mvc:View
controllerName="myproduct.controller.report.Design"
xmlns:html="http://www.w3.org/1999/xhtml"
displayBlock="true">
<html:link rel="stylesheet" href="/css/design.css"/>
<html:div id="content"/>
</mvc:View>
Controller.extend("myproduct.controller.report.Design",{
onAfterRendering:function(){
//The <html:div> is available in afterRendering
var $div = $("#"+this.createId("content"));
var p$Html = $.get(this.$api + "/getreport");
p$Html.done(function(data){
$div.html(data);
});
}
}