2016-06-14 9 views
-1

Ich habe einen Blick zurückbringen, die nur Html in sich hat:openui5/sapui5 bewahrt meine Html, sie aber nicht

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

ich halten den „Inhalt“ greifen, so dass ich Sachen JQuery tun können :

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); 

Jetzt ist das alles sehr klug und so weiter, aber ich habe einen Hack in $ elem.appendTo zu setzen hatte, ($ controller.getView() getDomRef().)

Im Allgemeinen, wenn ich ein Popup erstelle, sollte die Ansicht neu rendern, und es tut, aber innerhalb von openui5, erkennt es PreserveContent und öffnet das ursprüngliche Rendering in einen versteckten Bereich. Wenn mein Event-Handler ausgeführt wird, erhält er einen Verweis auf das ausgeblendete Ereignis.

Ich erwarte, dass Preserved Content vor dem Rendern gespeichert werden sollte und vor dem Ereignis afterRendering automatisch wiederhergestellt werden soll.

Weiß jemand, warum mein Html im Bereich ForceHidden steckt?

Mark

Antwort

0

Was ist der Grund, warum Sie jquery dom Manipulation überhaupt verwenden?

Mein erster Gedanke war, $content.setContent(p$Html.responseText) in der p$html.then() Handler zu rufen und entfernen Sie die Nacherfüllung Sachen.

Wenn die HTML-Steuerelement die HTML Sie anzeigen möchten nicht unterstützt, würde ich der Ansicht, die einen html:div einfügen, anstatt direkt in und verwenden, die:

<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); 
    }); 
    } 
} 
+0

Derzeit nur ich bin Verwenden von jQuery, um den Download anzuhängen, aber ich werde in Zukunft möglicherweise mehr tun. Es kam nie vor, dass der HTML-Namespace in XmlView berücksichtigt wurde - es ist ziemlich süß, wenn es als Standard-Namespace konfiguriert wird! Diese Lösung funktioniert perfekt. –

+0

Um fair zu sein, funktioniert die OpenUI5-Html-Steuerung einfach nicht für mich, egal was ich versuche. Diese Methode ist besser. –

Verwandte Themen