我需要能够以编程方式路由到不同的页面。据我所知,实际渲染路线的唯一方法是在Route声明中,如下:
Router.route('/', function() {
this.render('index');
});
我正在寻找的是从代码的任意部分过渡到另一条路线的能力。即if(whatever) Route.transionToRoute('homepage');
我通过窥探发现我可以使用Router.dispatch,但我得到了一些我认为源于该用法的错误行为,此外我在控制台中收到了一些奇怪的调试警告。它似乎是一种内部方法,因为我无法在其上找到任何文档。
我所描述的可以用铁路由器完成吗?
感谢您的帮助:)
答案 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