Я пытаюсь реализовать компонент «switcher» или «viewstack» в Aurelia, это было бы полезно для мастеров, постраничного контента и перехода по списку задач. Это покажет один дочерний компонент за раз из числа возможных детей. Я хотел бы разметка использования походить:Как реализовать компонент Switcher/Viewstack с слотом?
<my-switcher>
<one-component></one-component>
<two-component></two-component>
<three-component></three-component>
</my-switcher>
Теперь очевидные альтернативы здесь:
<compose view-model.bind="currentStep">
и указать переменную currentStep для каждого компонента в то время. (+ ves: компоненты создаются только при доступе, необходимо знать путь к каждому компоненту, все дети должны быть действительными моделями просмотра)- Добавить определение
if.bind='active'
в определение каждого компонента вslot
, и просто установите этот элементactive
из классаmy-switcher
. (+ ves: проще следовать, -ves: компоненты должны быть специально написаны для использования здесь). - Извлеките детей через @children (если это теперь работает надежно?) И добавьте элемент как дочерний элемент DOM вручную, затем вызовите
ViewCompiler.enhance
. (-ves: не может показаться, что вы получаете работу @children, больший объем настраиваемого кода)
Каждый из них немного придумал решение. Кто-нибудь имеет представление о том, есть ли более чистый подход, который может/должен использоваться вместо этого?
По моему опыту, @children работает отлично. Какие у вас были проблемы? –