So aktualisieren Sie eine Seite in einer Backbone-Anwendung
Ich bin mit Rückgrat zu bauen, meine web-app.
Derzeit stehe ich vor ein Problem, wobei, wenn ich auf der Startseite bin, bin ich nicht zum aktualisieren der gleichen Seite, indem Sie einfach auf den 'home' - Taste erneut.
Ich glaube, das ist die Einschränkung, zur Verfügung gestellt von Rückgrat (nicht die Seite neu laden, wenn die gleiche URL aufgerufen wird)
Gibt es eine Möglichkeit, um dieses? Also kann ich die trigger eine Seite neu laden, wenn ich auf die home-Taste erneut, d.h. der Aufruf der gleichen URL wieder?
InformationsquelleAutor der Frage Zhen | 2012-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf die backbone.js Quelle scheint es, als ob dies nicht möglich ist, standardmäßig, da es nur reagiert, um eine url-änderung. Und da Klick auf den gleichen link, würden Sie nicht auslösen eines change-Ereignis.
Code im Rückgrat.Geschichte:
Müssen Sie behandeln einen nicht selbst ändern. Hier ist, was ich getan habe:
InformationsquelleAutor der Antwort
Du suchst
Backbone.history.loadUrl
.Aus der Kommentierte Quelle:
Also, für einen einfachen link aktualisieren, können Sie die folgenden Ereignis nach Ihrer
Backbone.View
:InformationsquelleAutor der Antwort amiuhle
In Fall, dass Sie möchten, um neu zu laden Sie die ganze Seite mit einer gewünschten Ansicht. Dies könnte senes für die home-Taste. Der Vorteil wird sein, dass es dann aktualisieren Sie den Speicher.
Gehen Sie zu jedem Weg, ohne es zu laden (ohne den 'wahren') und dann neu laden
InformationsquelleAutor der Antwort guya
Rückgrat.Geschichte.loadUrl ist die Lösung.
Das click-handling-Funktion der Home-Taste (wenn die Heimat ist die Wurzel /Ihrer WebApp) werden sollte:
InformationsquelleAutor der Antwort Synn
Brauchte ich auf 'aktualisieren' meine Seite auf die Ausrichtung ändern, Ereignis, weil nicht alle meine css-media-queries für portrait-Modus, wo Sie ausgeführt werden standardmäßig korrekt. Dies ist, was ich am Ende machen:
Natürlich auch für die Vollständigkeit dieser Antwort, diese war eingehüllt in eine Orientierung ändern-handling-code:
InformationsquelleAutor der Antwort Bas Slagter
Könnte man auch einfach eine sinnlose änderung an der url fügen Sie eine zufällige Zahl an das Ende:
Dies ist besonders nützlich für den IE, da er keine Anforderung neuer Daten über einen AJAX-Aufruf, wenn die url hat sich nicht geändert.
InformationsquelleAutor der Antwort user2498689
Können Sie ganz einfach aktualisieren Sie die Seite mit unten Ansatz:
InformationsquelleAutor der Antwort Sumit Munot
Dies ist nicht upto-backbone. Das gleiche funktioniert in chrome(webkit-Browser), aber nicht im firefox. Ihr browser Verhalten
InformationsquelleAutor der Antwort RameshVel
Den Unterschied zwischen http://localhost.com/ und http://localhost.com/#!/ ist, der zweite ist ein link zu verankern, ist es nicht eine Seite zu laden, es sieht nur für den Anker in die aktuelle Seite und blättert es, wenn gefunden. Sie brauchen, um Ihren link sieht aus wie die erste, kein "#" schließen bis zum Ende.
InformationsquelleAutor der Antwort clyfe
Können Sie oft ändern Ihre route, um eine beize, so dass Sie anfügen können, um eine zufällige Zeichenfolge an das Ende eines href-machen es einzigartig, aber immer noch match "nach Hause" - route. (Hinweis: machen Sie diese Ihre Letzte route.)
In die Wege:
In der Ansicht:
In der Vorlage (LENKER hier dargestellt):
InformationsquelleAutor der Antwort Nate Barr
Um eine wiederverwendbare code-snippet ich erweiterte das Rückgrat.Ansicht mit einer helper-Methode zur Wiederverwendung wo immer wir brauchen, um neu zu laden der gleichen Seite, trotz der Backbone-router Einschränkungen.
In unserem app.js Datei oder jedem anderen geeigneten Ort
Diese Weise haben wir einen link wie
Unserer Ansicht würden wir nur zu binden, müssen Sie das click-Ereignis, um das callback zu nutzen, die Seite aktualisieren, Funktion, soweit die refreshPage Helfer über die Prototyp-Kette
Soweit brauchen wir nicht zu ändern "ein tag" es ist eine sauberere Lösung, sparen einige vorformulierten Codierung
Hoffe es hilft
InformationsquelleAutor der Antwort Jaime Agudo
Funktioniert es mit
InformationsquelleAutor der Antwort sri_bb
Hier ist mein Lieblings-Ansatz so weit:
InformationsquelleAutor der Antwort Guy