首页 > 解决方案 > 从方法调用时,Vue $route.push 不起作用

问题描述

我正在使用vue-bootstrap-typeahead自动完成库为我的应用程序构建一个搜索栏,如果您不熟悉它,当您单击建议的结果时,它会触发@hit事件,将结果数据传递给方法。

<vue-bootstrap-typeahead
    ...
    @hit="goToResult"
    ...
/>

然后我有goToResult方法

    methods: {
        goToResult(result) {
                this.$router.push({name: 'market', params: {marketId: result.id}});
        },
        ...
     }

当我从非市场路线进行搜索时,它工作正常,将用户重定向到所需的/market/:marketId路线,但是当它从“市场”路线完成时,它只会更改 URL,但不会重定向到新市场,它甚至会触发如果我两次单击相同的结果,但仍未重定向,则会出现“重复的路线”错误。

有什么建议吗?谢谢

标签: javascriptvue.jsvuejs2vue-router

解决方案


查看该router.push部分底部的注释:https ://router.vuejs.org/guide/essentials/navigation.html

注意:如果目的地与当前路由相同并且只有参数发生变化(例如从一个配置文件转到另一个 /users/1 -> /users/2),您将必须使用 beforeRouteUpdate 来响应更改(例如获取用户信息)。

...这里是如何使用beforeRouteUpdatehttps ://router.vuejs.org/guide/essentials/dynamic-matching.html#reacting-to-params-changes

希望这可以帮助!


推荐阅读