iview table内使用form表单验证

1,561 阅读1分钟
<template>
    <div>
        <Form ref="form" :model="form" :rules="rules">
            <Table :columns="columns" :data="form.data">
                <template slot-scope="{ row, index }" slot="age">
                    <FormItem :rules="rules.age"
                              :prop="`data.${index}.age`">
                        <Input type="text" v-model="form.data[index].age" number/>
                    </FormItem>
                </template>
            </Table>
        </Form>
        <Button @click="validate">校验</Button>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                rules: {
                    age: [
                        {required: true, type: 'number', message: '请输入', trigger: 'blur'},
                        {type: 'number', min: 20, message: '必须大于20', trigger: 'blur'}
                    ]
                },
                columns: [
                    {
                        title: '姓名',
                        key: 'name'
                    },
                    {
                        title: '年龄',
                        slot: 'age',
                        key: 'age'
                    },
                    {
                        title: '地址',
                        key: 'address'
                    },
                ],
                form: {
                    data: [
                        {
                            name: '给',
                            age: 18,
                            address: '北京市'
                        },
                        {
                            name: '发',
                            age: 25,
                            address: '北京市'
                        },
                        {
                            name: '吖',
                            age: 30,
                            address: '上海市'
                        },
                        {
                            name: '从',
                            age: 26,
                            address: '深圳市'
                        }
                    ],
                },
            }
        },
        methods: {
            validate() {
                this.$refs.form.validate(valid => {
                    if (valid) {
                        this.$Message.success('Success!')
                    } else {
                        this.$Message.error('error!')
                    }
                })
            },
        }
    }
</script>