TreeSelect 分类选择

引入

通过以下方式来全局注册组件,更多注册方式请参考。

单选模式

为分类显示所需的数据,数据格式见下方示例。main-active-index 表示左侧高亮选项的索引,active-id 表示右侧高亮选项的 id。

  1. <van-tree-select
  2. v-model:active-id="activeId"
  3. v-model:main-active-index="activeIndex"
  4. :items="items"
  5. />
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const activeId = ref(1);
  5. const activeIndex = ref(0);
  6. const items = [
  7. {
  8. text: '浙江',
  9. children: [
  10. { text: '杭州', id: 1 },
  11. { text: '温州', id: 2 },
  12. { text: '宁波', id: 3, disabled: true },
  13. ],
  14. },
  15. {
  16. text: '江苏',
  17. children: [
  18. { text: '南京', id: 4 },
  19. { text: '无锡', id: 5 },
  20. { text: '徐州', id: 6 },
  21. ],
  22. },
  23. { text: '福建', disabled: true },
  24. ];
  25. return {
  26. items,
  27. activeId,
  28. activeIndex,
  29. };
  30. },
  31. };

多选模式

  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const activeIndex = ref(0);
  5. const items = [
  6. {
  7. text: '浙江',
  8. children: [
  9. { text: '杭州', id: 1 },
  10. { text: '温州', id: 2 },
  11. { text: '宁波', id: 3, disabled: true },
  12. ],
  13. },
  14. {
  15. text: '江苏',
  16. children: [
  17. { text: '南京', id: 4 },
  18. { text: '无锡', id: 5 },
  19. { text: '徐州', id: 6 },
  20. ],
  21. },
  22. { text: '福建', disabled: true },
  23. ];
  24. return {
  25. items,
  26. activeId,
  27. activeIndex,
  28. };
  29. },
  30. };

通过 content 插槽可以自定义右侧区域的内容。

  1. <van-tree-select
  2. v-model:main-active-index="activeIndex"
  3. height="55vw"
  4. :items="items"
  5. >
  6. <van-image
  7. v-if="activeIndex === 0"
  8. src="https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg"
  9. />
  10. <van-image
  11. v-if="activeIndex === 1"
  12. src="https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg"
  13. />
  14. </template>
  15. </van-tree-select>

徽标提示

设置 属性后,会在图标右上角展示一个小红点;设置 badge 属性后,会在图标右上角展示相应的徽标。

  1. <van-tree-select
  2. v-model:main-active-index="activeIndex"
  3. height="55vw"
  4. :items="items"
  5. />
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const activeIndex = ref(0);
  5. return {
  6. activeIndex,
  7. items: [
  8. {
  9. text: '浙江',
  10. children: [
  11. { text: '杭州', id: 1 },
  12. { text: '温州', id: 2 },
  13. { text: '宁波', id: 3, disabled: true },
  14. ],
  15. dot: true,
  16. },
  17. {
  18. text: '江苏',
  19. children: [
  20. { text: '南京', id: 4 },
  21. { text: '无锡', id: 5 },
  22. { text: '徐州', id: 6 },
  23. ],
  24. badge: 5,
  25. },
  26. ],
  27. };
  28. },
  29. };

Props

Events

TreeSelectItem 数据结构

类型定义

组件导出以下类型定义:

    样式变量

    组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 。