Backbone.history.navigate (URL, {Auslöser: true, replace: true})

8

Ich habe diese Methode verwendet, um zu URL zu navigieren, ein Ereignis auszulösen und URL nicht in den Browserverlauf zu schieben. Aber Backbone.history.navigate(url,{trigger:true, replace: true}) ersetzt die vorherige URL aus dem Verlauf. Beispiel: Browserhistorie

Vorher

localhost:port/url

Backbone.history.navigate(url + '/list',{ trigger:true, replace: true })

Erwartet: Trigger-Ereignis auf der Route url + '/list' und Browser-Verlauf localhost:port/url Eigentlich: auslösendes Event aber Browserhistorie localhost:port/#url/list . Vorherige URL wird ersetzt

    
user2508256 23.12.2013, 08:42
quelle

1 Antwort

13

Hier ist, was ich denke, dass Sie fragen, bitte korrigieren Sie mich, wenn ich falsch liege:

"Wie trigge ich eine Route in Backbone an, ohne die URL zu aktualisieren?"

Schnelle Antwort :

Sie können nicht. Die Option Ersetzen wird Ihnen auch dort nicht helfen. Hier ist ein Auszug aus der Dokumentation:

  

Um die URL zu aktualisieren, ohne einen Eintrag im Browserverlauf zu erstellen, setzen Sie die Option zum Ersetzen auf true.

Wie Sie sehen können, wirkt sich replace nicht auf die Aktualisierung der URL aus.

Folgeantwort :

Wenn Sie nicht möchten, dass die URL aktualisiert wird, denke ich, dass das Anzeigen einer Liste in Ihrer Anwendung nicht eine wichtige Aktualisierung Ihres Anwendungsstatus ist. Wenn dies der Fall ist, sollten Sie nach meiner Erfahrung nicht das Objekt Backbone.history verwenden, um es zu verwalten.

Wenn Sie diese Funktion entweder direkt (z. B. über eine Funktion) oder indirekt (z. B. durch Senden eines Ereignisses) aufgerufen haben, wird Ihre App aktualisiert und Ihre URL nicht.

Ich mag Derick Baily's Post zur Einrichtung Ihrer Router-Struktur. Es ist ein bisschen lang, aber eine Lektüre wert.

Sehen Sie sich auch David Sulcs Repo für "Eine sanfte Einführung in die Marionette" an. Ich weiß, dass es Marionette.AppRouter -Objekte verwendet, aber die Prinzipien sind immer noch solide. Sehen Sie sich diese Datei für ein Beispiel an.

Als Randnotiz, wenn # das Problem ist; schau dir diese SO-Antwort an . Seien Sie jedoch vorsichtig, die hashChange Option ist hauptsächlich für die x-Browser-Kompatibilität gemäß den Dokumenten .

    
Aubricus 10.02.2014, 19:31
quelle