Javascript 流星铁路由器:取消路由
我的应用程序中的一些路由是游戏,我想在用户即将离开运行中的游戏时实现一个确认过程 有没有办法“停止”路由器 我试过:Javascript 流星铁路由器:取消路由,javascript,meteor,router,Javascript,Meteor,Router,我的应用程序中的一些路由是游戏,我想在用户即将离开运行中的游戏时实现一个确认过程 有没有办法“停止”路由器 我试过: Router.configure({ onBeforeRun: function() { Router.stop(); } }); 但它摧毁了一切 有什么主意吗?你能用这样的吗?(我自己还没有用过熨斗路由器) 基本上只是捕捉链接点击事件,并抛出确认对话框。如果他们单击yes,它将运行路由器的go方法,触发路由更改,否则单击将被忽略 编辑更新代码
Router.configure({
onBeforeRun: function() {
Router.stop();
}
});
但它摧毁了一切
有什么主意吗?你能用这样的吗?(我自己还没有用过熨斗路由器)
基本上只是捕捉链接点击事件,并抛出确认对话框。如果他们单击yes,它将运行路由器的go方法,触发路由更改,否则单击将被忽略 编辑更新代码以使用原始href值
这是一个老帖子,但刚刚解决了它。以下是我的解决方案:
Router.route('/myPath', {
unload: function (e, obj) {
if(Session.get("hasChanged")){
if (confirm("Are you sure you want to navigate away ?")) {
// Go and do some action
}else{
// Redirect to itself : nothing happend
this.redirect('/myPath');
}
}
}
}
这会起作用,但这意味着我不能使用
{{{link to}}
助手;这是iron routerGood point中基本的nice实用程序之一。我更新了上面的代码以使用他们的url方法,看起来它导航到了您传递给它的url。或者,您可以将其去掉,只需将e.preventDefault()
放在if语句中。(不确定)哦,我看到了如何使用你的答案:)我稍微编辑了一下你的代码
Router.route('/myPath', {
unload: function (e, obj) {
if(Session.get("hasChanged")){
if (confirm("Are you sure you want to navigate away ?")) {
// Go and do some action
}else{
// Redirect to itself : nothing happend
this.redirect('/myPath');
}
}
}
}