FontFamilySelect.vue 989 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <el-select
  3. class="font-family-select"
  4. v-model="selected"
  5. placeholder="请选择"
  6. @change="select"
  7. >
  8. <el-option
  9. v-for="item in optionList"
  10. :key="item"
  11. :label="item"
  12. :value="item"
  13. >
  14. <span :style="{ fontFamily: item }">{{ item }}</span>
  15. </el-option>
  16. </el-select>
  17. </template>
  18. <script>
  19. const PREDEFINE_OPTIONS = ["宋体", "楷体", "黑体"];
  20. export default {
  21. name: "font-family-select",
  22. props: {
  23. value: String,
  24. predefine: Array
  25. },
  26. data() {
  27. return {
  28. optionList: [],
  29. selected: ""
  30. };
  31. },
  32. watch: {
  33. value: {
  34. immediate: true,
  35. handler(val) {
  36. this.selected = val;
  37. }
  38. }
  39. },
  40. created() {
  41. this.optionList =
  42. this.predefine && this.predefine.length
  43. ? this.predefine
  44. : PREDEFINE_OPTIONS;
  45. },
  46. methods: {
  47. select() {
  48. this.$emit("input", this.selected);
  49. this.$emit("change", this.selected);
  50. }
  51. }
  52. };
  53. </script>