Ich benutze Iron Router, um Bootstrap modals von ihrer spezifischen URL in einem Meteor-Projekt zu starten, und ich möchte in der Lage sein, die Browser-Schaltflächen zurück und vorwärts zu verwenden um durch sie zu navigieren.Nicht in der Lage, Eisenrouter zum ersten Mal Browser zu arbeiten, wird geklickt
Das Problem:
Eisen Router auf dem ersten Mal nicht den Zurück-Button des Browsers Feuer geklickt wird, nach, dass es gut funktioniert!
Mein Code:
ich vereinfacht den Code ein wenig, aber das ist, wie ich die URL festgelegt, wenn ein modaler öffnet oder schließt (das funktioniert).
Template.main.events({
// modal closed -> URL to "/"
'click.dismiss.bs.modal': function() {
if(window.location.pathname != "/"){
// error prevention:
// click.dismiss.bs.modal also fires when user opens a modal
window.history.pushState("", "", "/");
}
},
// modal opened -> URL to "/u/username"
'click *[data-target="#infoModal"]': function() {
window.history.pushState("", "", "/u/" + username);
}
});
Das ist mein router.js Code, auch ein bisschen vereinfacht. Die Konsolenprotokolle werden nicht beim ersten Drücken der Zurück-Taste des Browsers zurückgegeben.
Router.route('/u/:username', {
name: 'u.show',
waitOn: function() {
return Meteor.subscribe('users');
},
action: function() {
console.log("Iron Router is trying to open #infoModal");
$('#infoModal').modal('show');
}
});
Router.route('/', {
name: 'home.show',
waitOn: function() {
return Meteor.subscribe('users');
},
action: function() {
console.log("Iron Router is trying to close all modals");
$('.modal').modal('hide');
}
});
Ich arbeitete nie mit Eisen Router vor, damit ich weiß nicht wirklich, was ich falsch hier tue, ist jede Hilfe sehr geschätzt!
Danke! Router.go(); habe mein Problem behoben. Ich sehe auch, warum Ihre Prüfung besser als mein Beispiel ist, aber in der ursprünglichen Anwendung werde ich prüfen, ob das Element, auf das geklickt wird, ein Modal starten wird oder nicht, anstatt die URL zu überprüfen. Ihr Vorschlag basiert wahrscheinlich auf meinem Beispiel. –