铁:路由器是否相当于Ember的transitionToRoute?

时间:2014-12-27 20:40:09

标签: javascript ember.js meteor routes

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

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

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

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

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

感谢您的帮助:)

2 个答案:

答案 0 :(得分: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()对象可用)它会显示新闻,否则它会进行注册路径

答案 1 :(得分:1)

如果您在路线控制器内,可以致电:

this.redirect('routeNameOrURL');


如果您在应用程序中的任何位置,请执行以下操作:

Router.go('routeNameOrURL');


两者都会将新状态弹出到浏览器历史记录中。

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