Javascript 第一次单击“返回浏览器”时,无法使Iron router工作

Javascript 第一次单击“返回浏览器”时,无法使Iron router工作,javascript,meteor,bootstrap-modal,iron-router,Javascript,Meteor,Bootstrap Modal,Iron Router,我正在使用Iron Router从Meteor项目中的特定URL启动引导模式,我希望能够使用浏览器的后退和前进按钮来浏览它们 问题: Iron Router不会在第一次点击浏览器的后退按钮时启动,之后它工作正常 我的代码: 我简化了一点代码,但这就是我在模式打开或关闭时设置URL的方式(这是有效的) 这是我的router.js代码,也有点简化。第一次按下浏览器的后退按钮时,控制台日志不会返回 Router.route('/u/:username', { name: 'u.show',

我正在使用Iron Router从Meteor项目中的特定URL启动引导模式,我希望能够使用浏览器的后退和前进按钮来浏览它们

问题:

Iron Router不会在第一次点击浏览器的后退按钮时启动,之后它工作正常

我的代码:

我简化了一点代码,但这就是我在模式打开或关闭时设置URL的方式(这是有效的)

这是我的router.js代码,也有点简化。第一次按下浏览器的后退按钮时,控制台日志不会返回

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');
    }
});
我从来没有与铁路由器之前,所以我真的不知道我在这里做错了什么,任何帮助是非常感谢

我认为与其自己操纵浏览器历史,不如自己去做。这样,图书馆就可以为其内部簿记“做正确的事情”

Template.MyButton.events({
  'click #clickme': function () {
    Router.go('/one');
  }
});
您还应实施路线检查,使您的生活更轻松:

if(Router.current().route.getName() != 'home.show') {
    Router.go('home.show');
}
这样,如果你曾经更改过URL(比如将整个应用程序放在子路径下),那么这段代码就不必再更改了。

我认为与其自己操纵浏览器历史记录,不如这样做。这样,图书馆就可以为其内部簿记“做正确的事情”

Template.MyButton.events({
  'click #clickme': function () {
    Router.go('/one');
  }
});
您还应实施路线检查,使您的生活更轻松:

if(Router.current().route.getName() != 'home.show') {
    Router.go('home.show');
}
这样,如果您更改了URL(如将整个应用程序置于子路径下),则此代码也不必更改。

谢谢!Router.go();解决了我的问题。我也明白为什么您的检查比我的示例更好,但是在原始应用程序中,我将检查单击的元素是否将启动模式,而不是检查URL。你的建议可能是基于我的例子的最佳实践。谢谢!Router.go();解决了我的问题。我也明白为什么您的检查比我的示例更好,但是在原始应用程序中,我将检查单击的元素是否将启动模式,而不是检查URL。你的建议可能是基于我的例子的最佳实践。