【问题标题】:Meteor Router.go() doesn't rederect, but it works in Chrome's consoleMeteor Router.go() 不会重定向,但可以在 Chrome 的控制台中使用
【发布时间】:2022-04-21 07:57:45
【问题描述】:

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

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

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

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

更新:我输入 Router.go('mainPage');在 Chrome 控制台中。它工作并返回未定义。

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    为了避免给大家带来这种悲惨、可怕的经历,让我发布我的解决方案并回答自己:

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

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

    a:hover {
        cursor: pointer;
    }
    

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

    【讨论】:

    • 谢谢!这为我节省了很多时间!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      【解决方案4】:

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

      至少设置一条路线:

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

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

      【讨论】:

      • 我已经读过了。我只是找不到它为什么不起作用...我在 Chrome 控制台中输入 Router.go('mainPage') 并且它工作正常并返回未定义。
      • 据我所知,您的事件语法不正确(Template.Post.events({}))。
      • 如果你能重现错误,我可以仔细看看。
      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2016-01-20
      相关资源
      最近更新 更多