<template> <el-select class="size-select" v-model="selected" placeholder="请选择" @change="select" > <el-option v-for="item in optionList" :key="item.value" :label="item.label" :value="item.value" > <span :style="{ fontSize: item.value }">{{ item.label }}</span> </el-option> </el-select> </template> <script> const PREDEFINE_OPTIONS = [ { value: "14px", label: "小(5号)" }, { value: "18.7px", label: "中(4号)" }, { value: "21.3px", label: "大(3号)" }, { value: "29.3px", label: "特大(2号)" }, { value: "34.7px", label: "超大(1号)" } ]; export default { name: "size-select", props: { value: String, predefine: Array }, data() { return { optionList: [], selected: "" }; }, watch: { value: { immediate: true, handler(val) { this.selected = val; } } }, created() { this.optionList = this.predefine && this.predefine.length ? this.predefine : PREDEFINE_OPTIONS; }, methods: { select() { this.$emit("input", this.selected); this.$emit("change", this.selected); } } }; </script>