Ich versuche, ein Aurelia-Element innerhalb eines anderen Elements zu erstellen. Ich verwende das Docking-Framework von phosphor und wenn ich dynamisch ein Panel erstelle, möchte ich eine Komponente hinzufügen, die ich mit Aurelia gebaut habe.Erstellen von Elementen in Aurelia
Zum Beispiel: Ich habe eine sehr einfache Protokollierungskomponente:
Logging.html
<template>
<h1>Logging....</h1>
</template>
Logging.ts:
export class Logging {
constructor() {
console.log('Logging constructor')
}
}
Die Komponente wie erwartet funktioniert, wenn ich „nur setzen es auf der Seite ".
Jetzt irgendeine Methode in der den Phosphor Widget erzeugt habe ich so etwas wie diese:
var widget = new Widget();
widget.title = "Got Logs?";
var contentElement = document.createElement('logging');
widget.node.appendChild(contentElement);
panel.insertBottom(widget);
Diesen Code, eine Leuchtstoffplatte gegeben, erzeugt ein Widget, erstellt ein Element, das wie folgt aussieht: <logging></logging>
und fügt es zum inneren Knoten des Widgets. Das resultierende "DOM" ist korrekt, aber aurelia gibt das Element nicht wieder.
Ich habe auch versucht die TemplatingEngine wie mit so:
import { inject, TemplatingEngine } from 'aurelia-framework';
@inject(TemplatingEngine)
export class AureliaRoot {
constructor(templatingEngine) { }
attached() {
var contentElement = document.createElement("logging"),
el = document.getElementById("my-element");
el.appendChild(contentElement);
templatingEngine.enhance({element: el, bindingContext: {}});
}
}
Aber dies scheint nicht zu arbeiten, obwohl ich verwende ich es richtig zweifeln, und ich glaube, ich könnte compile
verwenden müssen, wirklich da bin ich mir nicht sicher.
Alle Einsichten würden geschätzt werden.
Es hängt davon ab, an welchem Punkt das erstellt wird, denn soweit mein Wissen mit SPA-Frameworks geht sie auf das DOM handeln wie es ist, wenn man die manipulieren DOM außerhalb dieser Aktion (was Sie wahrscheinlich tun), dann wird das Framework nicht von Ihren Änderungen wissen. –
In der Tat, aber ich suche nach einem Weg, um die Zusammenstellung meiner Ansicht zu erzwingen. –