2016-07-21 4 views
4

Ich verwende canDeactivate() in einem View-Modell. Es gibt eine Möglichkeit für den Benutzer, sich von der Ansicht weg zu bewegen, in der canDeactivate seine Überprüfungen nicht ausführen sollte, und nur true zurückgibt (in diesem Fall, wenn der Benutzer eine Zurück-Schaltfläche drückt, die sich in einer anderen Ansicht befindet). Es scheint, dass canDeactivate keine Argumente (wie die Parameter, die an router.navigateToRoute übergeben werden). Wenn es so wäre, könnte ich anzeigen, dass die Zurück-Taste in den Parametern arg gedrückt wurde, wenn navigateToRoute aufgerufen wird. Was wäre ein guter Weg, um diese notwendige Information zu geben canDeactivate?Wie Informationen zu canDeactivate in Aurelia View-Modell

+0

erreichen müssen enthält haben Sie es geschafft noch eine Lösung für dieses Problem zu finden? – Peter

+0

Ja. Siehe meine Antwort. –

Antwort

0

ich importierte einfach das andere Ansicht-Modell (in diesem Fall ein navbar), die den Zustand für die Back-Taste enthält.

0

Ich bin mir nicht sicher, ob ich Ihre Frage verstanden habe ... Wie auch immer, Sie können Klasseneigenschaften innerhalb canDeactivate() zugreifen. Zum Beispiel:

canDeactivate() { 
    //before calling router.navigateToRoute 
    //you can set some properties to indicate the origin, the pressed button or wathever 

    if (this.someProperty === true) { 
     return true; 
    } 

    return false; 
} 
+0

Dies beantwortet die Frage nicht - OP fragt, wie man canDeactivate() mitteilen kann, wohin es navigiert, um die Entscheidung zu treffen, ob Sie es deaktivieren können oder nicht. – htxryan

1

ab aurelia-Router 1.4.0 wird canDeactivate ein Argument übergeben, die die Informationen, die Sie diese