Javascript 我如何使用Iron Router对URL哈希更改作出反应?
使用Iron Router时,我如何应对URL的哈希变化 为了控制页面呈现,我在自定义中重新实现了Javascript 我如何使用Iron Router对URL哈希更改作出反应?,javascript,url,meteor,url-routing,iron-router,Javascript,Url,Meteor,Url Routing,Iron Router,使用Iron Router时,我如何应对URL的哈希变化 为了控制页面呈现,我在自定义中重新实现了操作方法,但是如果URL的散列发生更改,则不会调用此钩子(例如,由于用户单击带有href=“#about”)的链接)。控制器的相关部分如下所示: @UserController = RouteController.extend({ action: -> tabName = @params.hash @state.set("activeTab", tabName) @
操作
方法,但是如果URL的散列发生更改,则不会调用此钩子(例如,由于用户单击带有href=“#about”
)的链接)。控制器的相关部分如下所示:
@UserController = RouteController.extend({
action: ->
tabName = @params.hash
@state.set("activeTab", tabName)
@render("user")
})
因此,基本上我需要
操作
方法在URL哈希更改时被调用。afaik iron router不会对哈希更改做出反应。两项建议:
window.addEventListener()
捕获哈希更改window.addEventListener("hashchange",function({
console.log(document.location);
});
当散列更改时,可以重新运行路由处理程序,但默认情况下不会发生。为了实现这一点,请在控制器上调用
getParams()
,而不仅仅是访问params
:
@UserController = RouteController.extend({
action: ->
tabName = @getParams().hash
@state.set("activeTab", tabName)
@render("user")
})
getParams
是一种依赖于散列的反应式计算,因此由于控制器的action
方法本身是反应式的,因此它将在散列更改时重新运行。1)将是我的选择。你能为它提供工作代码吗?你会如何将它与Iron Router集成?例如,由于新的散列值,我如何使Iron Router重新呈现。我发现实际上支持对散列更改做出反应,请参阅我的答案。@MichelFloyd它在中,但不太容易发现。