我在应用程序中使用Vue,我想知道如何提交表单,但避免重定向.

<!-- the submit event will no longer reload the page -->
<form v-on:submit.prevent="onSubmit"></form>

以下是我的表格:

<form class="myForm" action="/page" method="post" @submit.prevent="onSubmit">
    <input name="email" type="email" placeholder="e-mail" v-model="email">
    <button @click="myFunction()">

从某种意义上说,页面不再被重定向,但我得到一个错误,说没有定义onSubmit方法.所以我不明白该如何定义它.另一方面,我可以写@submit@prevent,但据我所知,它完全阻止提交,这不是我想要的.

推荐答案

onSubmit应该是vue实例上methods属性中的函数.即

methods: {
  onSubmit () {
    // DO Something
  }
}

然后正如doctor 所说,使用<form v-on:submit.prevent="onSubmit"></form>是正确的.我在我的应用程序中使用这个.

请参见下面的示例.单击按钮后,消息将更改,而不刷新页面.

var vm = new Vue({
  el: '#app',
  data () {
    return {
      test: 'BEFORE SUBMIT'
    }
  },
  methods: {
    onSubmit () {
      this.test = 'AFTER SUBMIT'
    }
  }
});
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
  {{test}}
  <form v-on:submit.prevent="onSubmit">
    <button>Submit!</button>
  </form>
</div>

Vue.js相关问答推荐

无法从CDN使用Vue和PrimeVue呈现DataTable

Vuetify 3 改变 Select 的 colored颜色

VSelect - Select 不适用于 Vuetify 3 中的自定义项目插槽

vuetify/mdi 不显示图标

在 Vuex 的状态下动态创建一个响应式数组

Defer推迟执行,直到外部脚本加载到 Vue.js

使用 Vue 和 JS 下载 CSV 文件

如何在 vue.js 模板中显示空间而不是 undefined 和 null?

为什么 vue 中的 @mouseover 操作不起作用

如何在nuxt路由中添加meta?

错误 [ERR_UNSUPPORTED_ESM_URL_SCHEME]:默认 ESM 加载器仅支持文件和数据 URL - Vue 3

VueJS 使用 prop 作为数据属性值

Vue devServer 代理没有帮助,我仍然收到 CORS 错误

在Vue中单击路由链接上的激活方法

重新加载页面正在 vue 组件中的插槽上闪烁内容

Vue如何将动态ID与v-for循环+字符串中的字段连接起来?

使用 Spring Boot(VueJS 和 Axios 前端)禁止发布 403 帖子

如何使用vue.js/nuxt.js获取一个目录下的所有图片文件

在 Vue JS 组件中使用 Laravel 路由的最佳方法是什么

Vue-i18n - 无法读取未定义的属性配置