Vant3 TreeSelect 分類選擇

2021-09-14 11:05 更新

介紹

用于從一組相關(guān)聯(lián)的數(shù)據(jù)集合中進(jìn)行選擇。

實(shí)例演示

引入

通過以下方式來全局注冊(cè)組件,更多注冊(cè)方式請(qǐng)參考組件注冊(cè)。

import { createApp } from 'vue';
import { TreeSelect } from 'vant';

const app = createApp();
app.use(TreeSelect);

代碼演示

單選模式

item 為分類顯示所需的數(shù)據(jù),數(shù)據(jù)格式見下方示例。main-active-index 表示左側(cè)高亮選項(xiàng)的索引,active-id 表示右側(cè)高亮選項(xiàng)的 id。

<van-tree-select
  v-model:active-id="state.activeId"
  v-model:main-active-index="state.activeIndex"
  :items="items"
/>
import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      activeId: 1,
      activeIndex: 0,
    });
    const items = [
      {
        text: '浙江',
        children: [
          { text: '杭州', id: 1 },
          { text: '溫州', id: 2 },
        ],
      },
      {
        text: '江蘇',
        children: [
          { text: '南京', id: 5 },
          { text: '無錫', id: 6 },
        ],
      },
    ];

    return {
      state,
      items,
    };
  },
};

多選模式

active-id 為數(shù)組格式時(shí),可以選中多個(gè)右側(cè)選項(xiàng)。

<van-tree-select
  v-model:active-id="state.activeIds"
  v-model:main-active-index="state.activeIndex"
  :items="items"
/>
import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      activeId: [1, 2],
      activeIndex: 0,
    });
    const items = [
      {
        text: '浙江',
        children: [
          { text: '杭州', id: 1 },
          { text: '溫州', id: 2 },
        ],
      },
      {
        text: '江蘇',
        children: [
          { text: '南京', id: 5 },
          { text: '無錫', id: 6 },
        ],
      },
    ];

    return {
      state,
      items,
    };
  },
};

自定義內(nèi)容

通過 content 插槽可以自定義右側(cè)區(qū)域的內(nèi)容。

<van-tree-select
  v-model:main-active-index="activeIndex"
  height="55vw"
  :items="items"
>
  <template #content>
    <van-image
      v-if="activeIndex === 0"
      src="https://img.yzcdn.cn/vant/apple-1.jpg" rel="external nofollow" 
    />
    <van-image
      v-if="activeIndex === 1"
      src="https://img.yzcdn.cn/vant/apple-2.jpg" rel="external nofollow" 
    />
  </template>
</van-tree-select>
import { ref } from 'vue';

export default {
  setup() {
    const activeIndex = ref(0);
    return {
      activeIndex,
      items: [{ text: '分組 1' }, { text: '分組 2' }],
    };
  },
};

徽標(biāo)提示

設(shè)置 dot 屬性后,會(huì)在圖標(biāo)右上角展示一個(gè)小紅點(diǎn);設(shè)置 badge 屬性后,會(huì)在圖標(biāo)右上角展示相應(yīng)的徽標(biāo)。

<van-tree-select
  v-model:main-active-index="activeIndex"
  height="55vw"
  :items="items"
/>
import { ref } from 'vue';

export default {
  setup() {
    const activeIndex = ref(0);
    return {
      activeIndex,
      items: [
        { text: '浙江', children: [], dot: true },
        { text: '江蘇', children: [], badge: 5 },
      ],
    };
  },
};

API

Props

參數(shù) 說明 類型 默認(rèn)值
items 分類顯示所需的數(shù)據(jù) Item[] []
height 高度,默認(rèn)單位為px number | string 300
main-active-index 左側(cè)選中項(xiàng)的索引 number | string 0
active-id 右側(cè)選中項(xiàng)的 id,支持傳入數(shù)組 number | string |
(number | string)[]
0
max 右側(cè)項(xiàng)最大選中個(gè)數(shù) number | string Infinity
selected-icon 自定義右側(cè)欄選中狀態(tài)的圖標(biāo) string success

Events

事件名 說明 回調(diào)參數(shù)
click-nav 點(diǎn)擊左側(cè)導(dǎo)航時(shí)觸發(fā) index:被點(diǎn)擊的導(dǎo)航的索引
click-item 點(diǎn)擊右側(cè)選擇項(xiàng)時(shí)觸發(fā) data: 該點(diǎn)擊項(xiàng)的數(shù)據(jù)

Slots

名稱 說明
content 自定義右側(cè)區(qū)域內(nèi)容

Item 數(shù)據(jù)結(jié)構(gòu)

items 整體為一個(gè)數(shù)組,數(shù)組內(nèi)包含一系列描述分類的對(duì)象,每個(gè)分類里,text表示當(dāng)前分類的名稱,children表示分類里的可選項(xiàng)。

[
  {
    // 導(dǎo)航名稱
    text: '所有城市',
    // 導(dǎo)航名稱右上角徽標(biāo)
    badge: 3,
    // 是否在導(dǎo)航名稱右上角顯示小紅點(diǎn)
    dot: true,
    // 導(dǎo)航節(jié)點(diǎn)額外類名
    className: 'my-class',
    // 該導(dǎo)航下所有的可選項(xiàng)
    children: [
      {
        // 名稱
        text: '溫州',
        // id,作為匹配選中狀態(tài)的標(biāo)識(shí)符
        id: 1,
        // 禁用選項(xiàng)
        disabled: true,
      },
      {
        text: '杭州',
        id: 2,
      },
    ],
  },
];

樣式變量

組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請(qǐng)參考 ConfigProvider 組件。

名稱 默認(rèn)值 描述
--van-tree-select-font-size var(--van-font-size-md) -
--van-tree-select-nav-background-color var(--van-background-color) -
--van-tree-select-content-background-color var(--van-white) -
--van-tree-select-nav-item-padding 14px var(--van-padding-sm) -
--van-tree-select-item-height 48px -
--van-tree-select-item-active-color var(--van-danger-color) -
--van-tree-select-item-disabled-color var(--van-gray-5) -
--van-tree-select-item-selected-size 16px -


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)