Если у меня есть пользовательский элемент вроде этого:Aurelia - Эталонная модель вида пользовательского элемента внутри слота
export class mycomponent {
constructor() {
this.name = 'John Doe';
}
}
<template>
My component
<slot></slot>
</template>
И использовать этот компонент в другой точке зрения (я зарегистрировал пользовательский элемент глобально):
<template>
<mycomponent>
Test
${name}
</mycomponent>
</template>
Возможно ли получить доступ к модели представления mycomponent
в этой области? Например, распечатайте его свойство name
?
EDIT Так вот мое окончательное решение: gist my solution
Я положил сменную часть внутри моего пользовательского элемента:
<template>
<template replaceable part="content"></template>
</template>
, а затем атрибут ProcessContent на модели представления:
import { processContent } from 'aurelia-framework';
@processContent(replacePart)
export class MyComponent {
name = "John Doe";
}
function replacePart(compiler, resources, node){
node.innerHTML = `<template replace-part="content">${node.innerHTML}</template>`;
return true;
}
Нравится программа? Поделись с друзьями! Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии.
<h4>Component 1</h4>
<my-component>
<div>One name</div>
<strong>${name}</strong>
</my-component>
Хороший ответ. Легкий способ достичь моей цели. Я решил попробовать и извлечь содержимое из слота, а затем скомпилировать его вручную с помощью компилятора вида, но это может сделать проблему более сложной, чем необходимо. Большое спасибо. – John
Да, «сменная» - это особая концепция Aurelia, но при этом она обеспечивает больше функциональности. –
@AshleyGrant: Это замечательная особенность. Я собирался сказать, что он не задокументирован в HUB, но нашел его в Cheat Sheet. :) Обновлен ответ, чтобы иметь этот официальный источник. –