diff --git a/example/pages/tree-select/index.wxml b/example/pages/tree-select/index.wxml index db1af7ac..35089402 100644 --- a/example/pages/tree-select/index.wxml +++ b/example/pages/tree-select/index.wxml @@ -16,6 +16,7 @@ active-id="{{ activeIdMulti }}" bind:click-item="onClickItemMulti" bind:click-nav="onClickNavMulti" + max="2" content-item-class="content-item-class" > diff --git a/packages/tree-select/README.md b/packages/tree-select/README.md index 7dfcaabe..4e057ccc 100644 --- a/packages/tree-select/README.md +++ b/packages/tree-select/README.md @@ -97,6 +97,7 @@ Page({ | items | 分类显示所需的数据 | *Array* | `[]` | - | | main-active-index | 左侧选中项的索引 | *number* | `0` | - | | active-id | 右侧选中项的 id,支持传入数组 | *string \| number \| Array* | `0` | - | +| max | 右侧项最大选中个数 | *number* | *Infinity* | - | ### Events diff --git a/packages/tree-select/index.ts b/packages/tree-select/index.ts index 1713a63e..abe1a461 100644 --- a/packages/tree-select/index.ts +++ b/packages/tree-select/index.ts @@ -23,6 +23,10 @@ VantComponent({ maxHeight: { type: Number, value: 300 + }, + max: { + type: Number, + value: Infinity } }, @@ -51,7 +55,13 @@ VantComponent({ // 当一个子项被选择时 onSelectItem(event: Weapp.Event) { const { item } = event.currentTarget.dataset; - if (!item.disabled) { + const isArray = Array.isArray(this.data.activeId); + // 判断有没有超出右侧选择的最大数 + const isOverMax = isArray && (this.data.activeId.length >= this.data.max); + // 判断该项有没有被选中, 如果有被选中,则忽视是否超出的条件 + const isSelected = isArray ? this.data.activeId.indexOf(item.id) > -1 : this.data.activeId === item.id; + + if (!item.disabled && (!isOverMax || isSelected)) { this.$emit('click-item', item); } },