slots.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <el-tree-select v-model="value" :data="data">
  3. <template #default="{ data: { label } }">
  4. {{ label }}<span style="color: gray">(suffix)</span></template
  5. >
  6. </el-tree-select>
  7. <el-divider />
  8. use render content:
  9. <el-tree-select
  10. v-model="value"
  11. :data="data"
  12. :render-content="renderContent"
  13. />
  14. </template>
  15. <script lang="ts" setup>
  16. import { ref } from 'vue'
  17. const value = ref()
  18. const renderContent = (h, { data }) => {
  19. return h(
  20. 'span',
  21. {
  22. style: {
  23. color: '#626AEF',
  24. },
  25. },
  26. data.label
  27. )
  28. }
  29. const data = [
  30. {
  31. value: '1',
  32. label: 'Level one 1',
  33. children: [
  34. {
  35. value: '1-1',
  36. label: 'Level two 1-1',
  37. children: [
  38. {
  39. value: '1-1-1',
  40. label: 'Level three 1-1-1',
  41. },
  42. ],
  43. },
  44. ],
  45. },
  46. {
  47. value: '2',
  48. label: 'Level one 2',
  49. children: [
  50. {
  51. value: '2-1',
  52. label: 'Level two 2-1',
  53. children: [
  54. {
  55. value: '2-1-1',
  56. label: 'Level three 2-1-1',
  57. },
  58. ],
  59. },
  60. {
  61. value: '2-2',
  62. label: 'Level two 2-2',
  63. children: [
  64. {
  65. value: '2-2-1',
  66. label: 'Level three 2-2-1',
  67. },
  68. ],
  69. },
  70. ],
  71. },
  72. {
  73. value: '3',
  74. label: 'Level one 3',
  75. children: [
  76. {
  77. value: '3-1',
  78. label: 'Level two 3-1',
  79. children: [
  80. {
  81. value: '3-1-1',
  82. label: 'Level three 3-1-1',
  83. },
  84. ],
  85. },
  86. {
  87. value: '3-2',
  88. label: 'Level two 3-2',
  89. children: [
  90. {
  91. value: '3-2-1',
  92. label: 'Level three 3-2-1',
  93. },
  94. ],
  95. },
  96. ],
  97. },
  98. ]
  99. </script>