2013-10-08 62 views
0

在我迪朗达尔的应用程序,我有一个搜索页面 - 我想:迪朗达尔 - 从“返回”按钮进入判别与导航()

  • 负载时,它从加载一个干净的搜索页面菜单(router.navigate('#/search')
  • 当从搜索页导航到某个项目时,然后使用后退按钮,这应该返回到原始搜索结果&条件。

我还将我的搜索条件&结果存储为一个(应用程序范围内的)单例,它通过RequireJS注入视图模型。

我可以:区分用户如何进入页面?我可以看到activate()生命周期调用在两种入口方法下都被触发。

+0

是的,当你这样做时,目前没有工作? –

回答

1

如果您想知道用户是否通过点击您应用中的链接/按钮或通过输入网址/返回按钮访问搜索页面,我会做的是在用户点击时提出事件在链接/按钮和搜索页面上检查事件是否已经引发或者在router.navigate中传递了一些参数。

1

我最近一直在做一些工作,区分用户在应用程序内点击并从浏览器中选择后退或前进按钮。如果使用router.navigate()在Durandal应用程序中导航,则router.explicitNavigation标志设置为true。但是,当'router:navigation:complete'事件中的标志被设置为false时,您希望在'router:route:activating'事件中的'router:navigation:complete'事件之前捕获该事件。

底线是如果您使用router.navigate浏览应用程序,则router.explicitNavigation属性将设置为true,并且如果使用浏览器路由器中的后退/前进按钮触发导航,则将显式导航设置为假。

在实际情况下,您可能甚至不需要执行router.navigate()来区分应用内导航和浏览器后退/前进,因为Durandal的路由器模块监听所有'a'标签,单击文档级别并设置explicitNavigation标志为true。但是我没有完全测试过。