Wie genau wechseln Sie die Seiten? Meteor lädt die gesamte Seite neu, wenn Sie traditionelle Anker-Tags als Anker-Werkzeug verwenden.
Zum Beispiel, wenn Sie zwischen Vorlagen navigieren und sind mit dieser Art von Struktur:
<a href="/pathToTemplate">Let's go to the new template!</a>
Meteor wird die gesamte Seite neu zu laden, wie Sie tatsächlich einen Anker-Tag mit dem Browser zu sagen, Routen zu ändern. Wenn Sie diese Struktur jedoch verwenden:
<a href="{{pathFor 'yourTemplateName'}}">To the new template ahoy!</a>
Der Link wird Eisen Router sagen die Vorlage für Sie zu ändern und nur den Code aktualisieren, die Sie haben in Ihrer {{> Ausbeute}} Bereich. Um Ihre Links zu den richtigen Seiten zu leiten, stellen Sie sicher, dass Sie die im Feld name:...
aufgelisteten Felder in Ihrem Router in den Abschnitt 'yourTemplateName'
des pathFor
Helfers einfügen.
Kurz gesagt, der Grund, warum Sie eine vollständige Browseraktualisierung erhalten, liegt wahrscheinlich daran, dass Sie den Browser verwenden, um zwischen den Links zu wechseln, anstatt die integrierten Meteor- und Iron-Router-Helfer zur Berechnung der Logik zu verwenden für den Übergang. Es gibt noch viel mehr, was Sie mit diesem Helfer tun können. Wenn Sie weitere Informationen benötigen, empfehle ich Ihnen, den Pfad- und Link-Vorlagen-Helfer-Abschnitt unter Iron Router's Git page zu lesen.
Wenn Sie nur bestimmte Teile der Seite zum Aktualisieren brauchen und der Rest gleich bleibt, dann würde ich auf die Antwort von CodeChimp verweisen, da es sich um Sound handelt. Wenn Sie verschiedene Layout-Vorlagen für verschiedene Dinge benötigen, hilft Ihnen die Layouts-Sektion dabei, mit Ihrem Code nett zu werden und vielleicht sogar ein Grinsen zu knacken, wie nur Action-Helden unbeirrt von einem explodierenden Gebäude weggehen.
Eine andere Situation, die Sie finden können, wenn Sie einen Link verwenden müssen, um eine Aktion auszuführen, aber Sie wollen nicht den Browser, um das Ereignis kapern und die Seite neu rendern. In diesem Fall würden Sie Ihren HTML-Code wie gewohnt einrichten und dann dieses Element, das das click -Ereignis erhält, entweder anhand seiner ID, Klasse oder des TAG-Namens und mithilfe der folgenden Codestruktur in der JavaScript-Datei, die Ihrer Vorlage entspricht, ausrichten. Dies ist nützlich für die Übermittlung von Formularen, die eine Meteor-Methode auslösen, die etwas auf dem Server ausführt, und dann die erforderlichen Daten zurückgibt (normalerweise zu einer Umleitungsfunktion) und so weiter und so fort.
Also, wenn Sie auf der Vorlage sind crazyStuffIsAboutToHappen
und Sie wollten ein Meteor Methode doCrazyStuff
genannt rufen, wenn Sie auf einen Link klicken, der eine ID von #triggerCrazyStuff
hat und dann haben Meteor Ihre Benutzer auf die theHouseThatCrazyStuffBuilt
Vorlage umleiten, würden Sie die verwenden folgende Struktur.
Template.crazyStuffIsAboutToHappen.events(
'click #triggerCrazyStuff': (e) ->
e.preventDefault() # to stop the browser from hijacking the event
# -- error handling and pre-submit validation and yadda yadda --
Meteor.call('doCrazyStuff', --arguments--, (error, result) ->
if error
# handle the error + short-circuit the function.
return throwError(error.reason)
Router.go('theHouseThatCrazyBuilt, {--args--})
)
Und ja, der Template.TEMPLATE_NAME.events
Bereich ist auch sehr praktisch für alle anderen JS Ereignisse gibt wie MouseEnter- und so weiter und so fort.
Happy Coding!
Haben Sie genau das gleiche Problem ... haben Sie es geschafft, es zu lösen? Das Seltsame ist, dass manchmal ein Klick auf den Anker ein traditionelles Eisen-Router-Verhalten zeigt, während andere Anker das vollständige Neuladen der Seite durchführen. – tomitrescak
@ user1348303 Überprüfen Sie meine Antwort unten. Es kann helfen zu erklären, warum Sie diese Unterschiede zwischen den Routen sehen. –