DirectionSelect.vue 1.0 KB

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