Я пытаюсь создать элемент Aurelia внутри другого элемента. Я использую среду стыковки от phosphor, и когда я динамически создаю панель, я хочу добавить компонент, который я создал с помощью Aurelia.Создание элементов в Aurelia
Например: У меня есть очень простой компонент протоколирования:
Logging.html
<template>
<h1>Logging....</h1>
</template>
Logging.ts:
export class Logging {
constructor() {
console.log('Logging constructor')
}
}
компонент работает, как ожидалось, когда я «просто поставить это на странице ".
Теперь внутри какой-то метод, который создает люминофора виджет у меня есть что-то вроде этого:
var widget = new Widget();
widget.title = "Got Logs?";
var contentElement = document.createElement('logging');
widget.node.appendChild(contentElement);
panel.insertBottom(widget);
Этот код, получающий люминофора панели, создает виджет, создает элемент, который выглядит как: <logging></logging>
и присоединяет его к внутреннему узлу виджета. Получаемый «DOM» правильный, но aurelia не отображает элемент.
Я также попытался с помощью TemplatingEngine так:
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: {}});
}
}
Но это не похоже на работу, хотя я сомневаюсь, что я использую это правильно, и я думаю, что, возможно, придется использовать compile
, на самом деле не уверен там.
Любые идеи были бы оценены.
Это зависит от того, в какой момент это создается, потому что, насколько мне известно, с рамками SPA идет, они будут действовать на DOM, как есть, если вы манипулировать DOM вне этого действия (которое вы, скорее всего, делаете), тогда структура не будет знать о ваших изменениях. –
Действительно, но я ищу способ «заставить компиляцию» моего представления. –