封装el-selected

在开发项目中,发现表单上有很多el-selected组件,于是,倒不如把它封装起来,减少代码量,可以实现复用。

SelectedPackage组件:

<template>
    <div>
        <el-select
                v-if="selectedData.type==='select'"
                v-model="selectedValue"
                :multiple="selectedData.multiple"
                collapse-tags
                clearable
                :disabled="selectedData.isDisabled"
                :placeholder="selectedData.placeholder"
                @change="changeHandle"
        >
            <el-option
                    v-for="item in selectedData.options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    :disabled="item.isDisabled"
            />
        </el-select>
    </div>
</template>

<script>
    export default {
        name: "SelectedPack",
        props: {
            selectedData: {
              type: Object,
              required: true
            }
        },
        // watch: {
        //     selectedValue: {
        //         handle(newVal,oldVal){
        //             this.$emit('selectedValue',newVal)
        //         }
        //     }
        // },
        data() {
            return {
                selectedValue: '', // 选择的值
            }
        },
        methods: {
            changeHandle(val) {
                this.$emit('selectedValue',val)
            }
        }
    }
</script>

<style scoped>

</style>

在父组件中的引用:

<selected-pack :selectedData="selectedData" @selectedValue="getSelectedValue"></selected-pack>
data(){
  return{
    selectedData: {
                    type: 'select',
                    value: 'huaian',
                    multiple: false,
                    isDisabled: false,
                    placeholder: '请选择',
                    options: [
                        {name: '上海', value: 'shanghai'},
                        {name: '北京', value: 'beijing'},
                        {name: '淮安', value: 'huaian'}
                    ]
                }
  }
},
methods:{
   getSelectedValue(val) {
              this.$notify.info({
                  message: val
              })
            }
}

好啦,这样就可以实现复用了:

效果图:

 

图片.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值