流星铁路由器仅在路径改变时执行动作

时间:2014-09-02 08:44:03

标签: meteor iron-router

我希望我的铁路由器在挂钩之前只有在我的路径发生变化时执行。

我的标题(布局)中有一个关键字搜索字段,当我更改页面时,我在此字段中重置,但是当我停留在同一页面上并触发某些事件时,我没有。

我该怎么做?

这就是我所拥有的:

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字段被重置。

有什么想法吗?

2 个答案:

答案 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会在每次路由更改时触发(而不是像我想的那样在每个路由器启动时触发......)。

相关问题