Meteor Router.go() 不会重定向,但它在 Chrome 的控制台中有效

Meteor Router.go() doesn't rederect, but it works in Chrome's console

Meteor Router.go() 不起作用。它只是在浏览器中闪烁一个新的 url 几毫秒,页面没有切换。

抱歉,我找不到任何关于这件事是如何发生的线索......!

Template.Post.events({ 
'click a': function() { 
    Router.go('mainPage');  
});

Router.route('/', {
  name: 'mainPage',
  template: 'mainPage'
});

更新:我输入Router.go('mainPage');在 Chrome 控制台中。它有效并且 return 未定义。

我们可以看看您的路由器定义吗?

至少设置一条路线:

Router.route('/mainPage', {
    template: 'mainPage'
});

可在此处找到文档:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md

我也遇到了这个问题,将它包装在 Meteor.setTimeout 中是让它工作的唯一方法。

'click a': function() { 
    Meteor.setTimeout(function(){ Router.go('mainPage'); }, 10); 
}

为了避免每个人都经历这种悲惨、可怕的经历,请让我post我的解决方案并自己回答:

Router.go() 重定向 URL 时,URL 也会立即重定向到 href="#"href=""。因此,它禁用了从 Router.go().

的重定向

解决方法就是不要把href=""放在<a>标签里。另外,您可以添加此 css:

a:hover {
    cursor: pointer;
}

显示标签实际上是可点击的。

您可以通过调用 event.preventDefault() 来避免删除 href,这会停止执行任何其他冒泡事件,例如 href 点击:

"click #aLinkId": function(event, template) {
    event.preventDefault();
    Router.go('/newLocation');
}