javascript - Vue 使用一个 submit() 方法的多个表单

标签 javascript vue.js vuejs2 vue-component

我有几个表格。他们每个人都有相同的逻辑(验证,发送......)所以,我想创建一种方法来控制我的表单上的操作。现在我的代码是冗余的,因为我在每个 .vue 文件上都有相同的方法 onSubmit()

我的 HTML:

<div id="app">
    <myform-one></myform-one>
    <myform-two></myform-two>
</div>

我的 JavaScript(ma​​in.js - webpack 中的入口文件):

import Vue from 'vue';
import Myform1 from './myform1.vue';
import Myform2 from './myform2.vue';

new Vue({
    el: '#app',
    components: {
        myformOne: Myform1,
        myformTwo: Myform2
    }
});

和VUE组件文件:

myform1.vue:

<template>
    <div>
        <form @submit.prevent="onSubmit">
            <input type="text" v-model="fields.fname11" />
            <input type="text" v-model="fields.fname12" />
            <button type="submit">submit</button>
        </form>
    </div>
</template>

<script>
    let formfields = {
        fname11: '',
        fname12: ''
    };

    export default {
        data() {
            return {
                fields: formfields
            }
        },

        methods: {
            onSubmit() {
                // code responsible for reading, validating and sending data here
                // ...
                console.log(this.fields);
            }
        },
    }
</script>

myform2.vue:

<template>
    <div>
        <form @submit.prevent="onSubmit">
            <input type="text" v-model="fields.fname21" />
            <input type="text" v-model="fields.fname22" />
            <input type="text" v-model="fields.fname23" />
            <button type="submit">submit</button>
        </form>
    </div>
</template>

<script>
    let formfields = {
        fname21: '',
        fname22: '',
        fname23: '',
    };

    export default {
        data() {
            return {
                fields: formfields
            }
        },

        methods: {
            onSubmit() {
                // code responsible for reading, validating and sending data here
                // ...
                console.log(this.fields);
            }
        },
    }
</script>

如何创建和使用一个通用方法 submitForm()?它的代码应该在哪里(良好实践)?

最佳答案

创建一个包含逻辑的单独文件:

// submitForm.js
export default function (fields) {
   // code responsible for reading, validating and sending data here
   // ...
}

然后在组件内部使用该逻辑

import submitForm from "../services/submitForm.js"
...
methods: {
  onSubmit() {
    submitForm(this.fields)
  }
}

关于javascript - Vue 使用一个 submit() 方法的多个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887704/

相关文章:

javascript - Vuejs 路由器无法访问任何组件

vue.js - Vuex Store 是否可以从控制台或客户端浏览器访问?

javascript - 无法访问除 $mounted 之外的 Vue 组件的 $el

javascript - 正则表达式替代项(所有匹配项)

javascript - 在一种情况下是相同的对象,在另一种情况下是不同的对象?

jQuery - 每个函数

node.js - 语法错误: Unexpected token … in serialport in node_modules

javascript - 如何在 Bootstrap-Vue 中制作全 Angular 标签卡?

javascript - wp_dequeue_script 子主题替换脚本

javascript - 如何计算 JSON 数组元素的长度