我希望我的铁路由器在挂钩之前只有在我的路径发生变化时执行。
我的标题(布局)中有一个关键字搜索字段,当我更改页面时,我在此字段中重置,但是当我停留在同一页面上并触发某些事件时,我没有。
我该怎么做?
这就是我所拥有的:
Router.onBeforeAction ->
$(".notification").remove()
Session.set("keyword_search","")
$("#keyword-search").val("")
return
即使单击不更改路径的按钮,也会执行onBeforeAction挂钩。这不是我想要的......
我尝试使用像这样的document.referrer
Router.onBeforeAction ->
$(".notification").remove()
if document.referrer.indexOf @path == -1 #only if new path
Session.set("keyword_search","")
$("#keyword-search").val("")
但它不起作用,因为当我点击页面上的按钮时,引荐来源仍然是具有不同网址的最后一页,我的keyword_search字段被重置。
有什么想法吗?
答案 0 :(得分:0)
为什么不将路径存储在Session变量中并检查它是否已更改?从您的第二个代码块:
Router.onBeforeAction ->
$(".notification").remove()
unless Session.equals("current_path", @path) # only if new path
Session.set("current_path", @path)
Session.set("keyword_search", "")
$("#keyword-search").val("")
答案 1 :(得分:0)
这里的解决方案是使用onRun钩子。
onRun会在每次路由更改时触发(而不是像我想的那样在每个路由器启动时触发......)。