Я пытаюсь добавить class
в элемент html
, когда Aurelia переходит на новый маршрут, чтобы я мог стилизовать страницу по-разному при ее загрузке.Обнаруживать изменение на router.isNavigating
Мое текущее решение, чтобы добавить класс к main
элемента, потому что это часть моей точки зрения, и поэтому «просто работает», как это:
import {inject} from 'aurelia-framework';
import {Router} from 'aurelia-router';
@inject(Router)
export class App {
constructor (router) {
this.router = router;
}
}
И тогда, на мой взгляд, я просто сделать:
<main class="${router.isNavigating ? 'loading' : ''}">
<router-view></router-view>
</main>
Но, как я уже говорил, я бы предпочел, чтобы добавить loading
класс к html
элементу вместо этого (так что я могу укладывать каждый на-потомок странице). Поскольку элемент html
равен не часть моего представления. Я не могу сделать это таким же образом, но вместо этого мне нужно document.documentElement.classList.add('loading')
всякий раз, когда router.isNavigating
истинно.
Так что мой вопрос; как я могу это сделать? Я знаю, что aurelia поддерживает методы propertyChanged
, но я не уверен, как это работает, когда это вложенное свойство, такое как router.isNavigating
, routerIsNavigatingChanged()
не работает. Я также попробовал @computedFrom(router)
и варианты этого, но не могу заставить его работать.
Ответ Fabio, приведенный выше, эквивалентен выполнению '@computedFrom ('router.isNavigating')', но я думаю, что решение с использованием EventAggregator является правильным способом для этого. –
Я согласен с @AshleyGrant. –
ребята, позвольте мне спросить .. используя 'isNavigating' для показа/спрятать spinner, полагая, что у меня есть api-вызов в приложенном событии .. прядильник скроется, даже если мой звонок еще не закончился? –