vue+render+jsx实现可编辑动态多级表头table

最近项目需要实现可编辑的动态多级表头表格,看了两天的文章,始终没有找到我想要的效果,在了解了render+jsx的基础用法后,自己基于element-ui封装了一个,数据格式参考element-ui table的数据。实现如下:

1.scoresTable

<script>
    import scoresColumn from "./scoresColumn";
    export default {
   
        components: {
   
            scoresColumn
        },
        render: function(h) {
   
            return <div className="table-control">
                <el-table ref="table"
                          size="small"
                          {
   ...{
   attrs: {
   data:this.tableData}}}
                          border
                >
                    {
   
                        this.tableTitles.map(title => {
   
                            return <scoresColumn on-dataChange={
   this.dataChange} {
   ...{
   attrs: {
   column:title,unitScores: this.unitScores}}}></scoresColumn>
                        })
                    }

                </el-table>
            </div>;
        },
        props: {
   
            tableTitles: {
   
                type: Array,
                default: () => []
            },
            tableData: {
   
                type: Array,
                default: () => []
            },
            unitScores: {
   
                type: Object,
                default: () => {
   }
            }
        },
        methods: {
   
            dataChange(id) {
   
                this.$emit('dataChange', id);
            }
        },
    }
</script>
<style>
  .el-table th, .el-table td {
   
    text-align: center;
  
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue中使用Element UI实现动态编辑table并对input进行验证,首先需要在Vue项目中引入Vue和Element UI库,并在组件中注册所需的Element UI组件。 接下来,在组件的data中定义一个数组,用于存储表格的数据。例如: ``` data() { return { tableData: [ {name: '张三', age: 18, email: 'zhangsan@example.com'}, {name: '李四', age: 20, email: 'lisi@example.com'} ], rules: { name: [ {required: true, message: '请输入姓名', trigger: 'blur'} ], age: [ {required: true, message: '请输入年龄', trigger: 'blur'}, {type: 'number', message: '年龄必须为数字', trigger: 'blur'} ], email: [ {required: true, message: '请输入邮箱', trigger: 'blur'}, {type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change']} ] } } } ``` 在组件的template中,使用el-table来展示表格数据,并将每个单元格的内容放在el-form-item组件中,同时绑定对应的验证规则。代码示例如下: ``` <el-table :data="tableData" style="width: 100%"> <el-table-column label="姓名"> <template slot-scope="scope"> <el-form-item :prop="'name' + scope.$index" :rules="rules.name"> <el-input v-model="scope.row.name" :placeholder="'请输入姓名'"></el-input> </el-form-item> </template> </el-table-column> <el-table-column label="年龄"> <template slot-scope="scope"> <el-form-item :prop="'age' + scope.$index" :rules="rules.age"> <el-input v-model="scope.row.age" :placeholder="'请输入年龄'"></el-input> </el-form-item> </template> </el-table-column> <el-table-column label="邮箱"> <template slot-scope="scope"> <el-form-item :prop="'email' + scope.$index" :rules="rules.email"> <el-input v-model="scope.row.email" :placeholder="'请输入邮箱'"></el-input> </el-form-item> </template> </el-table-column> </el-table> ``` 最后,在组件的methods中定义一个方法,用于提交表单数据并进行验证。代码示例如下: ``` methods: { submitForm() { this.$refs['form'].validate((valid) => { if (valid) { // 表单验证通过,提交数据 // TODO: 表单提交逻辑 } else { // 表单验证失败,进行错误提示 this.$message.error('请输入正确的表单数据'); } }); } } ``` 至此,我们实现了一个动态编辑table,并对input进行了验证。用户在编辑表格数据时,输入的数据将被验证,只有通过验证的数据才能提交。如果数据不符合规则,会进行错误提示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值