Wie erreiche ich den Router global im Backbone js?

8

Dies ist meine app.js-Datei. Ich muss auf die navigate -Methode des Routers innerhalb der navigateToLogin -Methode der LandingView -Klasse zugreifen. Da der appRouter jedoch nach der Ansicht definiert ist, kann er den Router nicht innerhalb der Ansicht erkennen. Also muss ich einen Weg finden, global von jeder Klasse oder Methode auf den Router zuzugreifen. Wie kann ich dieses Problem umgehen?

%Vor%     
jaykumarark 19.12.2012, 13:04
quelle

2 Antworten

20

Wenn Sie den Backbone-Code ein wenig untersuchen, werden Sie feststellen, dass die Implementierung von navigate des Routers wiederum Backbone.history.navigate :

aufruft %Vor%

Anstatt also den globalen Bereich explizit zu mucken, verwenden Sie Backbone.history.navigate :

%Vor%     
Lukas 19.12.2012, 18:43
quelle
7

Wenn Sie appRouter benötigen, um global zugänglich zu sein, müssen Sie es an ein globales Objekt anhängen. In Webbrowsern ist dies das Objekt window .

%Vor%

Und auf es über das Fenster zugreifen:

%Vor%

Die Verwendung von Globals kann zu Code führen, der schwer zu pflegen ist. Wenn Ihre App keine triviale Größe hat, sollten Sie einen Entkopplungsmechanismus wie das Mediatormuster verwenden.

    
jevakallio 19.12.2012 13:21
quelle