2017-07-13 28 views
1

Aurelia + WebStormを使用してツールバーをプログラミングしました。このツールバーにはアクティブ化機能がありますが、決して自動的に呼び出されることはありません。ここにTypeScriptコードが表示されます:Aurelia activate関数は決して呼び出されません

import {autoinject} from "aurelia-dependency-injection"; 
import {RouteConfig, Router} from "aurelia-router"; 
import {bindable} from "aurelia-templating"; 
import {getLogger} from "aurelia-logging"; 
import {ActuatorApi, NotificationApi, SystemApi} from "gen/api"; 

@autoinject 
export class HeaderBar { 
    private static LOG = getLogger("header-bar"); 
    public notificationKey: string; 
    ... 

    @bindable 
    public router: Router; 
    constructor(private actuatorApi: ActuatorApi, private notificationApi: NotificationApi, 
       private systemApi: SystemApi) { 
     this.isBatterieTestActive = true; 
     this.hrefForActuatoresList = "#/app/configuration/actuators/"; 
     this.loadActuators(); 
    } 

    public async activate(params: any, routeConfig: RouteConfig): Promise<void> { 

    return this.loadNotifications(); 
    } 

私を助けてもらえますか?

答えて

3

コンポーネントではなく、 activate activateメソッドを使用してみてください。あなたのオリジナルのスニペットと比較して

export class HeaderBar { 

    private async attached(): Promise<void> { 
     return await this.loadNotifications(); 
    } 

    private loadNotifications() { 
     // do your async stuff here... 
     console.log('yeej, it works!'); 
    } 

} 

いくつかの変更:たとえば

  • のparamsおよび/またはrouteconfigを使用していないあなたを考慮すると、アクティブ化を使用すると、完全にもっともらしいです(ニーズに合わせているようですあなたは私の例で見ることができる限り、私は今見ることができるように)
  • 簡潔にするため、私はあなたの質問
  • に他のすべての非関連するコードを削除したことは、「非同期」に何の問題このメソッドません

また、activate()の使用法については、AureliaドキュメントのComponent Lifecycleセクションで詳しく説明しています。

更新: Aureliaライフサイクルの違いについては、StackOverflowの質問"Difference between a Component and a View in Aurelia (and their lifecycle)"も関心があります。

+0

パーフェクト。どうもありがとう。なぜ機能を起動できないのですか? – Sohrab

+0

@ user2505235これは実際には異なる質問です(ヒント:なぜここでそれを尋ねないのですか)。しかし、基本的には、起動された関数とコンポーネントを持たないビュー(ルートに関連するビュー)それ。また、回答が役に立った場合は、「答えとしてマークする」ことをためらってください。 –

+1

すべてがクリアです。どうもありがとうございます。 – Sohrab

関連する問題