教大家封装一个基础el-table 行内气泡编辑框,你一定用的到

今天的任务就是封装这个用element ui 组件来封装,如果让你封装你会怎么封装呢?

不说废话了,直接上代码

新建一个EditablePopoverColumn.vue组件文件

<template>
    <el-table-column :prop="prop" :label="label">
        <template slot-scope="scope">
            <el-popover :ref="`popover${prop}`" trigger="click" placement="top">
                <div class="flex-row">
                    <el-input v-if="!isSelect" style="width: 65%; margin-right: 10px;"
                        v-model="scope.row[prop]"></el-input>
                    <el-select v-else style="width: 65%; margin-right: 10px;" v-model="scope.row[prop]">
                        <el-option v-for="item in selectOptions" :key="item.value" :label="item.label"
                            :value="item.label"></el-option>
                    </el-select>
                    <el-button icon="el-icon-check" type="primary" size="mini"
                        @click="saveEdit(scope.row, prop)"></el-button>
                    <el-button icon="el-icon-close" type="info" size="mini"
                        @click="cancelEdit(scope.row, prop)"></el-button>
                </div>
                <el-button slot="reference" type="text">{{ scope.row[prop] || `请输入${label}`
                    }}
                </el-button>
            </el-popover>
        </template>
    </el-table-column>
</template>

<script>
export default {
    props: {
        prop: String,
        label: String,
        selectOptions: Array
    },
    computed: {
        isSelect() {
            return Array.isArray(this.selectOptions) && this.selectOptions.length > 0;
        }
    },
    data() {
        return {
            
        };
    },
    methods: {
        saveEdit(row, prop) {
                this.$refs[`popover${prop}`].doClose();
        },
        cancelEdit(row, prop) {
            this.$refs[`popover${prop}`].doClose();
        }
    }
};
</script>

在相关的页面引用就好拉~

<el-table :data="tableData" style="width: 100%">
            <editable-popover-column prop="contactName" label="联系人"></editable-popover-column>
            <editable-popover-column prop="position" label="职位"
                :select-options="list"></editable-popover-column>
........

</el-table>

剩下的作业就交给你们啦~  学着做出来吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值