首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue-router不使用@click重定向

Vue-router不使用@click重定向
EN

Stack Overflow用户
提问于 2018-03-02 21:34:32
回答 2查看 1.8K关注 0票数 0

模板:

代码语言:javascript
复制
<button @click="redirect">Search</button>
<input v-model="searchQuery" v-on:keyup.enter="redirect" type="text">

Js脚本:

代码语言:javascript
复制
export default {
  methods: {
    redirect: function() {
      if (this.searchQuery) {
        this.$router.push({
          name: 'tag',
          params: {
            tag: this.searchQuery
          }
        })
      }
    }
  },
  data() {
    return {
      searchQuery: ''
    }
  }
}

问题就在这里。如果我在输入中单击enter,重定向将很好地工作到名为tag的路由。如果我点击按钮,重定向将尝试发生(我将在浏览器url中看到更改),但随后它将立即返回到现有页面。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-02 21:48:19

我怀疑您有一个包装按钮和输入的<form>标记。然后点击button触发表单提交,这样页面就会重新加载并返回到同一页面。

尝试将单击事件修改为@click.prevent="redirect"

.prevent将在单击事件上具有event.preventDefault()的效果。

如果使用<form>不是原因,将删除此答案。

票数 2
EN

Stack Overflow用户

发布于 2018-03-02 21:40:50

我不知道是什么导致了这个错误。当您尝试使用单击事件重定向时,也许可以检查this.searchQuery是否有值。不管是哪种情况,我认为你最好使用<router-link />来重定向你的页面。如果您希望路由器链接看起来像一个按钮,则传递tag='button',如下例所示:

代码语言:javascript
复制
<router-link tag='button' :to="{ name: 'tag', params: { tag: this.searchQuery }}"> search </router-link>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49070189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档