【问题标题】:Does iron:router have an equivalent to Ember's transitionToRoute?Iron:router 是否与 Ember 的 transitionToRoute 等效?
【发布时间】:2015-02-24 14:24:55
【问题描述】:

我需要能够以编程方式路由到不同的页面。据我所知,实际呈现路线的唯一方法是在 Route 声明中:

Router.route('/', function() {
  this.render('index');
});

我正在寻找的是从代码的任意部分转换到另一条路线的能力。即if(whatever) Route.transionToRoute('homepage');

我通过窥探发现我可以使用 Router.dispatch,但我发现了一些错误行为,我认为这些行为源于该用法,此外我还在控制台中收到了一些奇怪的调试警告。它似乎是一种内部方法,因为我找不到任何文档。

我所描述的可以用铁路由器完成吗?

感谢您的帮助:)

【问题讨论】:

    标签: javascript ember.js meteor routes


    【解决方案1】:
    Router.route('/', function() {
       if(this.ready()){
         if(Meteor.user()){
           this.render('news');
         }else{
           Router.go('register');
         }
       }else{
         this.render('loading');
       }
    });
    

    这很简单,首先它等待this.ready()如果你有任何订阅被调用,然后如果你登录(Meteor.user()对象可用)它呈现新闻,否则它去注册路径

    【讨论】:

    • 也许说得太早了:/重定向有效,但是 Meteor.user() 不起作用:(我的另一个问题是 Meteor.user,我遇到了同样的问题() 甚至 Meteor.users.find().fetch().length 总是返回空,但是我可以在控制台中输入它并得到结果??
    • 你把 this.subscribe('name').wait() 放到路径了吗?
    【解决方案2】:

    如果你在路由控制器里面,你可以调用:

    this.redirect('routeNameOrURL');
    


    如果您在应用程序中的任何位置,您可以:

    Router.go('routeNameOrURL');
    


    两者都会在浏览器历史记录中弹出一个新状态。

    您可以查看 Iron Router 官方指南了解详细信息: https://github.com/EventedMind/iron-router/blob/devel/Guide.md#using-redirects

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2012-08-22
      • 2014-12-19
      • 2021-04-30
      • 2010-11-03
      • 2010-09-08
      相关资源
      最近更新 更多