忽略DurandalJS应用程序中的锚点

时间:2013-05-16 01:02:34

标签: durandal sammy.js hottowel

我有一个使用DurandalJS的SPA应用,效果很好。链接已路由,视图模型已激活等。

问题是,我有一个锚点指向实际存在于服务器上的页面。我需要浏览器来实际查询这个页面(它是一个asp.net MVC页面)。

似乎Durandal中的路由器挂钩到所有相对的链路(或者在同一个域上,实际上),如果找不到路由,则调用路由器的handleInvalidRoute方法。

我不能为我的生活弄清楚如何告诉Durandal不要路由这个URL。我还需要保持中/ ctrl +点击功能。

文档没有任何帮助,谷歌没有任何结果。我也试着查看路由器/ SammyJs代码,但我看不出任何明显的东西。

This question似乎与我的相同,但答案对我不起作用。我的网址都是实际网址(不是哈希前缀),因此我无法关闭PushState。

2 个答案:

答案 0 :(得分:3)

到目前为止,我找到的最简单的方法是创建绝对网址(例如http://myapp.com/whatever-that-is-not-a-sammy-route)并添加

target="_top"

到锚点。这允许新的选项卡行为(ctrl +单击,中键单击,打开新选项卡上下文菜单),当左键单击链接时,它将在当前窗口中打开,绕过Sammy路由!

答案 1 :(得分:1)

不确定这是否有帮助,但我创建了一个名为location.assign的点击绑定。我使用PHP,但它仍然适合你。这是一个例子:

在视图中

<a data-bind="click: goToMyLink">Go</a>

在ViewModel中

goToMyLink: function() {
    location.assign('myLink.php'):
}