我有一个指向我的某条路线的route-href
属性的链接。一切正常:
<a route-href="route: item; params.bind: {id: item.id}">${item.name}</a>
我现在创建了自己的自定义属性route-popup
,使用<compose>
以固定的叠加层打开路线,这也很好用:
<a route-popup="route: item; params.bind: {id: item.id}">${item.name}</a>
但是,为了让用户能够在新窗口中按住Ctrl并单击并打开项目,我想在链接上同时使用route-href
和 route-popup
:
<a route-href="route: item; params.bind: {id: item.id}" route-popup="route: item; params.bind: {id: item.id}">${item.name}</a>
然后从我的RoutePopupCustomAttribute
班级preventDefault()
开始,以便route-href
(或它创建的href
)被抑制:
this.onClick = e => {
e.preventDefault();
e.stopPropagation();
this.ea.publish('route-popup:open', {route: this.route, params: this.params});
return false;
};
但是,我的回调中的preventDefault
,stopPropagation
或返回false
似乎都无效。 Aurelia仍然遵循href
并呈现新页面。
如何阻止路由器导航到route-href
?
编辑:好的,所以这有点奇怪,我设置了一个gist.run来进一步解释这个问题,然而,在gist.run上它确实有效:/所有需要的是{{1} }。我的代码唯一的区别是我在路由器配置中使用e.preventDefault()
,所以我猜测它是什么?
https://gist.run/?id=daf226363df8cdc777be718bff3a4f76
是的,经过进一步测试后发现,当您使用pushState: true
时,pushState: true
无法使用preventDefault()
,而如果您使用hashChange: true
则为{。}}。