Durandal - 区分条目与“后退”按钮与导航()

时间:2013-10-08 04:01:44

标签: durandal

在我的Durandal应用程序中,我有一个搜索页面 - 我想:

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

我也存储了我的搜索条件&结果作为(app-wide)单例,通过RequireJS注入到视图模型中。

我能够:区分用户进入网页的方式吗?我可以看到在两种入口方法下都触发了activate()生命周期调用。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我最近做了一些工作来区分应用程序内的用户点击和浏览器的后退或前进按钮。如果您使用router.navigate()在Durandal应用程序中导航,则router.explicitNavigation标志设置为true。但是你想要在'router:route:activating'事件中的'router:navigation:complete'事件之前捕获这个,因为在'router:navigation:complete'事件中标志被设置回false。

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

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