Hervorhebung des aktuellen Navigationsstatus in der Backbone.js-Anwendung

8

Ich möchte den aktuellen Navigationsstatus hervorheben. Wenn die Hash-Änderung #home ist, möchte ich die Menünavigation 'Home' anders und ähnlich wie andere Links gestalten.

Backbone.js löst einzelne Ereignisse wie route:home , ... route:some-other aus, wenn auf die #home und andere Links geklickt wird. Ich konnte kein gemeinsames Ereignis sehen, das für jeden Hashwechsel ausgelöst wird. Damit muss ich die State-Highlight-Logik schreiben, indem ich an alle Routenereignisse binde, was meiner Meinung nach keine gute Lösung ist.

Also, ich habe Backbone.Router.route in meiner Router-Unterklasse / Objekt überschrieben, wie

%Vor%

Dies wird ein gemeinsames route_change -Ereignis für jede Hash-Änderung veröffentlichen und die name , fragment und andere args übergeben, wobei ich den Status an einem einzigen Ort hervorhebe.

Meine Frage ist, muss ich die Backbone-Methode wie diese überschreiben oder gibt es einen eingebauten Mechanismus, den ich hier verwenden kann. Wenn nicht, würde ich gerne ähnliches Verhalten in Backbone.js sehen

Bearbeiten: Beispielprogramm

%Vor%

und Navigation mit dem obigen Router:

%Vor%

Ausgabe: home route

Aktualisieren Sie , warum das obige Programm nicht funktioniert:

sollten wir für all event auf Router instance binden, aber nicht auf Router selbst - wenn also Router.bind('all', ... in router.bind('all', ...) geändert wird, funktioniert das obige Programm

    
manikanta 22.08.2011, 07:34
quelle

4 Antworten

7

In Backbone 0.5.x können Sie all event an die Router-Instanz binden und der erste Argument-Durchlauf an Ihren Handler wird route

sein

Hier ist Beispiel auf jsfiddle , hier wiedergegeben:

%Vor%     
ant_Ti 10.09.2011, 06:28
quelle
2

Hier ist ein Live-Beispiel aus einer meiner Apps:

%Vor%     
Mauvis Ledford 18.09.2011 20:13
quelle
0

Folgendes mache ich:

%Vor%     
cgenco 23.03.2015 16:55
quelle
-1

Ich hatte das Problem, dass beim ersten Laden einer Seite das Menü nicht hervorgehoben wurde, da das Ereignis vor dem Beginn der Bindung kam. Ich habe das behoben, indem ich den Verlauf benutzt habe:

%Vor%     
Achim Köllner 08.04.2012 03:54
quelle