У меня есть пользовательский элемент на основе строки (table-like), который динамически создает свой шаблон на основе атрибута bindable columns. Он составляет шаблон строки в строке и использует ViewCompiler, ViewFactory и Просмотр для визуализации.Aurelia - как регистрировать ресурсы просмотра для ViewCompiler?
import {inject} from 'aurelia-dependency-injection';
import {bindable, ViewCompiler, ViewResources} from 'aurelia-templating';
@inject(ViewCompiler, ViewResources)
export class MyDynamicGrid {
@bindable columns: any[];
@bindable rows: any[];
constructor(viewCompiler: ViewCompiler, viewResources: ViewResources) {
const template = '<template><custom-element></custom-element></template>'; //this is rather complex in practice
viewResources.registerElement('custom-element', /* HtmlBehaviorResource? */);
this._viewFactory = viewCompiler.compile(template, viewResources);
}
_render() : void {
const view = this._viewFactory.create(/* some container */);
view.bind(someContext, someOverrideContext);
//attach view to the DOM
}
}
Это прекрасно работает, пока пользовательский шаблон не содержит стандартные элементы HTML. Как только я начну добавлять пользовательские элементы в шаблон, он перестает работать. Он по-прежнему отображает HTML, но поведение пользовательского элемента не привязано Aurelia.
Я знаю, что все пользовательские элементы должны быть «зарегистрировано» для использования. «Нормальная регистрация» происходит либо в режиме просмотра через <require>
, либо в виде модели @viewResources
, либо зарегистрировать ее по всему миру.
В этом конкретном случае, однако, введенный ViewCompiler
наследует только ресурсы просмотра родителей модели представления. Мой вопрос: Как можно регистрировать любые дополнительные ресурсы просмотра? Я знаю второй параметр в ViewCompiler
compile
метод, но не смог заставить его работать. Единственный способ, которым я смог заставить его работать, если я зарегистрирую его по всему миру.
Примечание: этот вопрос фокусируется на регистрации ресурсов просмотра. Динамический рендеринг работает просто отлично
Что я ищу это, например, как должен быть зарегистрирован пользовательский элемент? Я предполагаю, что у него есть строковое имя для разрешения и модель представления, необязательно шаблон – balazska
Не дубликат упомянутого вопроса, динамическое представление/рендеринг работает просто отлично. Однако я хотел бы получить пример того, как должен регистрироваться ресурс вида. – balazska