Ändern Sie URL url ohne vorherige Verwendung von Backbone.js

8

Mit Backbone.js ist es möglich, dass der Router zu der Seite navigiert, von der er stammt? Ich möchte das für den Fall verwenden, wo ich meine URL ändere, wenn ein Popup erscheint, und ich möchte es zurück ändern, wenn ich das Popup ausgeblendet habe. Ich möchte nicht einfach zurückgehen, weil ich die Hintergrundseite genau in derselben Position behalten möchte, in der ich sie verlassen habe, bevor ich das Popup

gezeigt habe     
user802232 07.12.2011, 13:28
quelle

4 Antworten

14

Sie können dieses Problem lösen, indem Sie Backbone.Router erweitern und alle Routen während der Navigation speichern.

%Vor%

Wenn Sie dann Ihr Modal ablehnen müssen, rufen Sie einfach die Methode MyRouter.previous() auf, damit Sie zurück zum letzten "Hash" geleitet werden.

    
mateusmaso 28.04.2012, 05:35
quelle
1

Ich denke, dass mateusmasos Antwort meistens richtig ist, aber einige Optimierungen erfordern, um sicherzustellen, dass Sie immer die richtige URL erhalten, die Sie suchen.

Zuerst müssen Sie die route-Methode überschreiben, damit eine beforeRoute-Methode ausgelöst wird:

%Vor%

Dann binden Sie das Ereignis und initialisieren die Verlaufsinstanzvariable:

%Vor%

Als Nächstes erstellen Sie Hilfsmethoden zum Speichern und Abrufen des Fragments:

%Vor%

Schließlich benötigen Sie eine letzte Hilfsmethode, mit der Sie die URL ändern können, ohne das resultierende Fragment neu zu laden und zu speichern. Sie müssen dies verwenden, wenn Sie das Popup-Fenster schließen, oder Sie haben nicht das erwartete Fragment in Ihrem Verlauf, wenn der Benutzer das Popup erneut öffnet, ohne irgendwo anders zu navigieren. Dies liegt daran, dass der Aufruf von navigation ohne "trigger: true" den Ereignishandler nicht zum Speichern des Fragments auslöst.

%Vor%     
DrewB 25.09.2012 19:36
quelle
0

Diese Antwort kann die Frage nicht beantworten, aber es ist fast das gleiche Problem. Ich konnte aufgrund des Schrägstrichs nicht zu einer vorherigen Route oder einer benutzerdefinierten Route navigieren. Damit Routenfunktionen NICHT ausgelöst werden, verwenden Sie {trigger:false} , oder verwenden Sie gar keinen Trigger, da false das Standardverhalten ist, und stellen Sie sicher, dass Ihre Route mit #something anstelle von '# / etwas' beginnt ( beachten Sie den Schrägstrich), oder ändern Sie die RegEx in Backbone.js, der Router Teil.

    
man 03.01.2015 13:13
quelle
-2

Sie können eine Route im onCloseEvent Ihres Popups oder Overlays mit folgendem Befehl auslösen:

%Vor%

Damit wird die URL festgelegt. Wenn Sie als zweiten Parameter "Wahr" übergeben, führen Sie auch die Aktion "Routen" aus. Ansonsten bleibt die Seite unverändert.

Ссылка

    
ProTom 07.12.2011 14:55
quelle