openui5 / sapui5保留了我的Html,但没有把它带回来

时间:2016-06-14 16:31:09

标签: html sapui5

我有一个只有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='&lt;link rel="stylesheet" href="/css/design.css" /&gt;' />
    <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区域内停留吗?

标记

1 个答案:

答案 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);
    });
  }
}