2017-07-13 2 views
1

Ich programmierte eine Symbolleiste mit Aurelia + WebStorm. In dieser Werkzeugleiste gibt es eine Aktivierungsfunktion, die aber niemals automatisch aufgerufen wird. Sie können den TypeScript-Code hier sehen:Aurelia aktivieren Funktion nie aufgerufen werden

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(); 
    } 

Könnten Sie mir bitte helfen?

Antwort

3

Sie können versuchen, die aktivieren Methode für eine Komponente anstelle von Anhang verwenden. Zum Beispiel:

export class HeaderBar { 

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

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

} 

Einige Änderungen im Vergleich zum ursprünglichen Code-Schnipsel:

  • Sie erwägen sind nicht die params und/oder routeconfig, activate Verwendung ist durchaus plausibel und scheint an Ihre Bedürfnisse anzupassen (soweit ich jetzt sehen kann)
  • aus Gründen der Kürze ich alle anderen nicht-relevanten Code auf Ihre Frage entfernt haben
  • Es ist kein Problem zu ‚async‘ dieser Methode, wie Sie in meinem Beispiel sehen können

Die Verwendung von activate() wird auch im Abschnitt Component Lifecycle der Aurelia-Dokumentation ausführlicher beschrieben.

Update: Für den Unterschied in Aurelia Lebenszyklen, könnte die StackOverflow Frage "Difference between a Component and a View in Aurelia (and their lifecycle)" von Interesse sein.

+0

Perfekt. Danke vielmals. Warum aktivieren Funktion nicht funktioniert ??? – Sohrab

+0

@ user2505235 das ist eigentlich eine andere Frage alle zusammen (Hinweis: warum nicht fragen Sie es hier bei SO), aber im Grunde genommen gibt es einen Unterschied zwischen einer Ansicht (im Zusammenhang mit Route), die die aktivierte Funktion und Komponente hat, die nicht hat es. Auch, wenn die Antwort geholfen hat, zögern Sie bitte nicht, "es als eine Antwort zu markieren". –

+1

Alles ist klar. Ich danke dir sehr. – Sohrab

Verwandte Themen