我有一个使用DurandalJS的SPA应用,效果很好。链接已路由,视图模型已激活等。
问题是,我有一个锚点指向实际存在于服务器上的页面。我需要浏览器来实际查询这个页面(它是一个asp.net MVC页面)。
似乎Durandal中的路由器挂钩到所有相对的链路(或者在同一个域上,实际上),如果找不到路由,则调用路由器的handleInvalidRoute方法。
我不能为我的生活弄清楚如何告诉Durandal不要路由这个URL。我还需要保持中/ ctrl +点击功能。
文档没有任何帮助,谷歌没有任何结果。我也试着查看路由器/ SammyJs代码,但我看不出任何明显的东西。
This question似乎与我的相同,但答案对我不起作用。我的网址都是实际网址(不是哈希前缀),因此我无法关闭PushState。
答案 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'):
}