Я настраиваю приложение с несколькими окнами просмотра. Однако я хочу, чтобы один из видовых экранов был необязательным, т.е. если видовой экран не определен в определенном маршруте, он просто не должен отображаться. Однако Аурелия выдает ошибку, если я пытаюсь это сделать. Есть ли другой способ сделать окно просмотра необязательным?
Дополнительный вьюпорт в Aurelia
Ответы (2)
если для этого нет встроенной поддержки в aurelia, вы можете настроить ненужную точку просмотра на модуль, который имеет следующую логику:
import {noView, inject} from 'aurelia-framework';
@noView
@inject(Element)
export class HiddenViewPort {
constructor(element) {
this.element = element;
}
activate() {
// hide the router-view element
this.element.parentNode.classList.add('aurelia-hide');
}
deactivate() {
// show the router-view element
this.element.parentNode.classList.remove('aurelia-hide');
}
}
person
Jeremy Danyow
schedule
27.10.2015
Это все еще в силе? Во-первых, декоратор
@noView
приводит к ошибке, но я мог бы сделать это с пустым (inlineView) шаблоном. Моя проблема: введенный элемент не является родителем элемента <router-view>
(как я ожидал), а является элементом, для которого установлено aurelia-app
. Таким образом, aurelia-hide
присваивается его родителю, в моем случае это <body>
. Я воспроизвел это в gist.run: взгляните на него, класс aurelia-hide
установлен для элемента <html>
.
- person Daniel; 19.04.2016
У меня такая же проблема. Кто-нибудь знает обходной путь?
- person JoshKraker; 19.09.2016
Насколько я знаю, опциональные вьюпорты не поддерживаются. Наш обходной путь — использовать пустой модуль без содержимого:
import {inlineView} from 'aurelia-templating';
@inlineView('<template></template>')
export class EmptyViewModel {
}
person
balazska
schedule
01.12.2016
Использование
@noView
будет иметь тот же эффект
- person balazska; 01.12.2016