# TreeSelect 分类选择 ### 引入 在`app.json`或`index.json`中引入组件,默认为`ES6`版本,`ES5`引入方式参见[快速上手](#/quickstart) ```json "usingComponents": { "van-tree-select": "path/to/vant-weapp/dist/tree-select/index" } ``` ## 代码演示 ### 基础用法 可以在任意位置上使用 van-tree-select 标签。传入对应的数据即可。 此组件支持单选或多选,具体行为完全基于事件 click-item 的实现逻辑如何为属性 active-id 赋值,当 active-id 为数组时即为多选状态。 ```html ``` ```javascript Page({ data: { mainActiveIndex: 0, activeId: null }, onClickNav({ detail = {} }) { this.setData({ mainActiveIndex: detail.index || 0 }); }, onClickItem({ detail = {} }) { const activeId = this.data.activeId === detail.id ? null : detail.id; this.setData({ activeId }); } }); ``` ### 多选 ```html ``` ```javascript Page({ data: { mainActiveIndex: 0, activeId: [] }, onClickNav({ detail = {} }) { this.setData({ mainActiveIndex: detail.index || 0 }); }, onClickItem({ detail = {} }) { const { activeId } = this.data; const index = activeId.indexOf(detail.id); if (index > -1) { activeId.splice(index, 1); } else { activeId.push(detail.id); } this.setData({ activeId }); } }); ``` ### Props | 参数 | 说明 | 类型 | 默认值 | 版本 | |-----------|-----------|-----------|-----------|-----------| | items | 分类显示所需的数据,具体数据结构可看 数据结构 | *Array* | [] | - | | main-active-index | 左侧导航高亮的索引 | *number* | 0 | - | | active-id | 右侧选择项,高亮的数据id | *string \| number \| Array* | 0 | - | ### Events | 事件名 | 说明 | 回调参数 | |-----------|-----------|-----------| | bind:click-nav | 左侧导航点击时,触发的事件 | event.detail.index:被点击的导航的索引 | | bind:click-item | 右侧选择项被点击时,会触发的事件 | event.detail: 该点击项的数据 | ### items 数据结构 `items` 整体为一个数组,数组内包含一系列描述分类的对象 每个分类里,text 表示当前分类的名称。children 表示分类里的可选项,为数组结构,id 被用来唯一标识每个选项 ```javascript [ { // 导航名称 text: '所有城市', // 禁用选项 disabled: false, // 该导航下所有的可选项 children: [ { // 名称 text: '温州', // id,作为匹配选中状态的标识 id: 1, // 禁用选项 disabled: true }, { text: '杭州', id: 2 } ] } ] ``` ### 外部样式类 | 类名 | 说明 | |-----------|-----------| | main-item-class | 左侧选项样式类 | | content-item-class | 右侧选项样式类 | | main-active-class | 左侧选项选中样式类 | | content-active-class | 右侧选项选中样式类 | | main-disabled-class | 左侧选项禁用样式类 | | content-disabled-class | 右侧选项禁用样式类 |