當Aurelia正在導航到新路由時,我試圖將class
添加到html
元素,以便我可以在加載時以不同的樣式對頁面進行樣式設置。檢測對router.is的改變
我目前的解決方案是將類添加到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
元素,而不是(這樣我可以風格在頁面上每一個decendant)。由於html
元素是而不是我的觀點的一部分,我不能以相同的方式完成這一點,但相反,我需要document.documentElement.classList.add('loading')
每當router.isNavigating
爲真。
所以我的問題是,我怎麼能做到這一點?我知道aurelia支持propertyChanged
方法,但我不確定它是如何工作的,當它是嵌套的屬性,如router.isNavigating
,routerIsNavigatingChanged()
不起作用。我也嘗試過@computedFrom(router)
及其變種,但無法使其發揮作用。
Fabio上面的回答相當於做了@computedFrom('router.isNavigating')',但我認爲使用EventAggregator的解決方案是正確的方法。 –
我同意@AshleyGrant。 –
傢伙讓我問..使用'isNavigating'來顯示/隱藏微調器,假設我在附加事件中有一個api調用..即使我的調用還沒有結束,微調將會隱藏? –