在我的 Vue 2 应用程序中,我有一个菜单栏,其菜单项使用路由器链接。这些菜单项之一是“客户”,它将用户带到客户编辑器。现在,如果用户在客户编辑器中单击相同的“客户”菜单项,则不会发生任何事情。我认为这是因为文档中提到的这种行为:“在 HTML5 历史记录模式下,router-link 将拦截点击事件,以便浏览器不会尝试重新加载页面。”
现在,这是完全可以理解的,而且在大多数情况下,这就是我想要的行为。但实际上在这里我想要重新加载组件,回到干净的状态。或者更准确地说,对于某些事件的发生,我可以在客户编辑器中处理这些事件,以按照我的意愿进行设置。事实上,我以为会是这种情况,但是当我设置 watch 时,因此
watch: {
'$route' (to, from) {
console.log("Route changed");
}
},
我没有看到任何记录到控制台的内容。可能是发生了一些我没有处理的事件,而 Vue 只是在重用该组件。但是我怎样才能阻止它这样做呢?
最佳答案
根据 this issue ,您可以添加一个 @click.native
绑定(bind)到当前的 router-link
并在那里重新初始化您的组件数据。
但一个快速而肮脏的解决方案是将一个唯一参数附加到您的路线,例如日期。检查这个fiddle
关于vue.js - 单击事件路由器链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48644676/