2016-05-19 2 views

Antwort

1

Dies liegt daran, content ist keine Aggregation (ein einfacher Fehler zu machen, da in der Regel contentist eine Aggregation).

sap.ui.core.HTML ‚s content Metadaten-Objekt ist eine Eigenschaft vom Typ String. Von the jsdoc:

HTML-Inhalt angezeigt werden, definiert als Zeichenfolge.

Sie müssen einen anderen Behälter für das Etikett verwenden, wie sap.ui.layout.VerticalLayout, oder Sie könnten nur reines HTML verwenden in Ihrem holder Objekt zu bleiben, anstatt dass sap.m.Label Typ.

Here ist ein Jsbin, das den XML-View-Teil dieser Frage aus der Gleichung herausnimmt.

Hinweis: See @ hirse Kommentar unten für eine wichtige Unterscheidung, wenn html:div in XML Ansichten

+1

Obwohl ich der Antwort zustimme, beachte, dass das XML in der Frage kein Control von 'sap.ui.core.HTML' erzeugt, sondern eher ein echtes HTML-Element, also @schnoedels Antwort ist näher an der Frage. – hirse

+0

@hirse Danke, lernte etwas Neues. Ich werde meine Frage bearbeiten, um auf diesen Punkt aufmerksam zu machen. –

+0

xhtml, svg und reine Textknoten in einer XMLView werden einfach in das div der Ansicht kopiert, wenn die Ansicht gerendert wird: [XMLTemplateProcessor] (https://github.com/ SAP/openui5/blob/rel-1.38/src/sap.ui.Kern/src/sap/ui/core/XMLTemplateProcessor.js # L183) legt sie als String in der aResult, die XMLView._aParsedContent zugewiesen werden und [XMLViewRenderer] (https://github.com/SAP/openui5/blob/ rel-1.38/src/sap.ui.core/src/sap/ui/core/Mvc/XMLViewRenderer.js # L66) nur Zeichenfolgen in der _aParsedContent Array schreibt direkt auf zum RenderManager. Kontrollen werden anders gehandhabt. – schnoedel

1

Das HTML-Element und die UI5 ​​Bedienelemente verwendet, ist nicht direkt kompatibel. UI5-Steuerelemente sind JavaScript-Objekte mit einer Renderfunktion. Die Renderfunktion erstellt ein HTML-Fragment bei Bedarf. Dieses HTML-Fragment wird dann in die Seite eingefügt.

Ich habe nie versucht es, aber eine Lösung könnte die placeAt() Methode Ihres Etiketts zu verwenden sein:

label.placeAt("holder"); 

Wenn Sie mit einer XML-Ansicht, die Halter id Präfix wird. Dann sollten Sie etwas wie folgt verwenden:

label.placeAt(this.getView().createId("holder")); 
1

Sie können DOM erhalten Element UI5 Kontrolle durch getDomRef von sap.ui.core.Element Klasse.

Dann fügen Sie Ihre Inhalte zu diesem DOM-Element durch placeAt() mit

Here arbeitet Beispiel.