使用场景 ​
从静态层级 options 选择节点。规范化节点保留 raw 和 children,支持树形展开与复选。ASAM 值模式返回节点值而非整条路径;需要原始模型时显式 native。
层级选择与自定义节点 ​
default 插槽收到 data、node 和对应规范化 option;filterable 提供本地筛选。清空单选回到 null。
层级选择与自定义节点
<template>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{ filterable: true, clearable: true, 'aria-label': '选择团队' }"
v-model="value"
:options="options"
@change="event = JSON.stringify($event)"
>
<template #default="{ data }"> {{ data.label }}节点 </template>
<template #empty> 没有可选节点 </template>
</AsamTreeSelect>
<AsamButton type="default" @click="control?.focus()"> 聚焦 </AsamButton>
<output>值:{{ value }};事件:{{ event }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamTreeSelectBasicExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
import type { AsamTreeSelectExpose } from '@asam-ui/ui';
const control = ref<AsamTreeSelectExpose>();
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const value = ref<string | null>('design');
const event = ref('尚未更改');
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{ filterable: true, clearable: true, 'aria-label': '选择团队' }"
v-model="value"
:options="options"
@change="event = JSON.stringify($event)"
>
<template #default="{ data }"> {{ data.label }}节点 </template>
<template #empty> 没有可选节点 </template>
</AsamTreeSelect>
<AsamButton type="default" @click="control?.focus()"> 聚焦 </AsamButton>
<output>值:{{ value }};事件:{{ event }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamTreeSelectBasicExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
const control = ref();
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const value = ref('design');
const event = ref('尚未更改');
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
多选与对象值 ​
multiple + valueMode=object 返回规范化节点数组。字符串存储只用于 value 模式,separator 不得与节点值冲突;所有节点值保持唯一。
多选与对象值
<template>
<div class="example">
<AsamTreeSelect
v-model="objectValue"
:options="options"
v-bind="{ multiple: true, 'value-mode': 'object', 'show-checkbox': true }"
/>
<AsamTreeSelect
v-model="stringValue"
:options="options"
v-bind="{
multiple: true,
'multiple-value-mode': 'string',
separator: '|',
'show-checkbox': true
}"
/>
<output>对象:{{ objectValue }};字符串:{{ stringValue }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamTreeSelectPoliciesExample' });
import { ref } from 'vue';
import { AsamTreeSelect } from '@asam-ui/ui';
import type { AsamHierarchyOption } from '@asam-ui/ui';
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const objectValue = ref<AsamHierarchyOption[]>([]);
const stringValue = ref('design');
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<AsamTreeSelect
v-model="objectValue"
:options="options"
v-bind="{ multiple: true, 'value-mode': 'object', 'show-checkbox': true }"
/>
<AsamTreeSelect
v-model="stringValue"
:options="options"
v-bind="{
multiple: true,
'multiple-value-mode': 'string',
separator: '|',
'show-checkbox': true
}"
/>
<output>对象:{{ objectValue }};字符串:{{ stringValue }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamTreeSelectPoliciesExample' });
import { ref } from 'vue';
import { AsamTreeSelect } from '@asam-ui/ui';
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const objectValue = ref([]);
const stringValue = ref('design');
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
原始节点字段与实例 ​
native 使用 data 和 props 映射原始树。通过 getCheckedKeys 读取实际勾选节点,setCheckedKeys 修改勾选状态;模型由组件变化同步。
原始节点字段与实例
<template>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{
...{
'value-mode': 'native',
'node-key': 'id',
multiple: true,
'show-checkbox': true
},
...{ data: nodes, props: { label: 'name', children: 'nodes' } }
}"
v-model="value"
/>
<AsamButton type="default" @click="inspect"> 读取节点 </AsamButton>
<output>原始模型:{{ value }};{{ inspected }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamTreeSelectNativeExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
import type { AsamTreeSelectExpose, AsamTreeSelectNativeProps } from '@asam-ui/ui';
const control = ref<AsamTreeSelectExpose>();
const value = ref<AsamTreeSelectNativeProps['modelValue']>([]);
const nodes = [
{
id: 'team',
name: '团队',
nodes: [
{ id: 'design', name: '设计' },
{ id: 'dev', name: '开发' }
]
}
];
const inspected = ref('');
function inspect() {
inspected.value = JSON.stringify(control.value?.getCheckedKeys());
}
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{
...{
'value-mode': 'native',
'node-key': 'id',
multiple: true,
'show-checkbox': true
},
...{ data: nodes, props: { label: 'name', children: 'nodes' } }
}"
v-model="value"
/>
<AsamButton type="default" @click="inspect"> 读取节点 </AsamButton>
<output>原始模型:{{ value }};{{ inspected }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamTreeSelectNativeExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
const control = ref();
const value = ref([]);
const nodes = [
{
id: 'team',
name: '团队',
nodes: [
{ id: 'design', name: '设计' },
{ id: 'dev', name: '开发' }
]
}
];
const inspected = ref('');
function inspect() {
inspected.value = JSON.stringify(control.value?.getCheckedKeys());
}
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
四档尺寸与上下文继承 ​
四个实例分别显式使用 large、big、default、small。下面省略 size 的实例随 ConfigProvider 响应切换;显式 size 覆盖祖先。面板本身没有 size 契约的入口不附加虚构尺寸属性。
四档尺寸与上下文继承
<template>
<div class="example">
<div class="density-grid">
<section data-density="large">
<strong> large </strong>
<AsamTreeSelect size="large" :options="options" model-value="design" />
</section>
<section data-density="big">
<strong> big </strong>
<AsamTreeSelect size="big" :options="options" model-value="design" />
</section>
<section data-density="default">
<strong> default </strong>
<AsamTreeSelect size="default" :options="options" model-value="design" />
</section>
<section data-density="small">
<strong> small </strong>
<AsamTreeSelect size="small" :options="options" model-value="design" />
</section>
</div>
<AsamConfigProvider :size="density">
<section data-density="inherited">
<AsamTreeSelect :options="options" model-value="design" />
</section>
</AsamConfigProvider>
<div class="row">
<AsamButton type="default" @click="density = 'small'"> 继承 small </AsamButton>
<AsamButton type="default" @click="density = 'big'"> 继承 big </AsamButton>
</div>
<output>配置提供器:{{ density }}</output>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamTreeSelectSizesExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamConfigProvider, AsamButton } from '@asam-ui/ui';
import type { AsamControlSize } from '@asam-ui/ui';
const density = ref<AsamControlSize>('big');
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<template>
<div class="example">
<div class="density-grid">
<section data-density="large">
<strong> large </strong>
<AsamTreeSelect size="large" :options="options" model-value="design" />
</section>
<section data-density="big">
<strong> big </strong>
<AsamTreeSelect size="big" :options="options" model-value="design" />
</section>
<section data-density="default">
<strong> default </strong>
<AsamTreeSelect size="default" :options="options" model-value="design" />
</section>
<section data-density="small">
<strong> small </strong>
<AsamTreeSelect size="small" :options="options" model-value="design" />
</section>
</div>
<AsamConfigProvider :size="density">
<section data-density="inherited">
<AsamTreeSelect :options="options" model-value="design" />
</section>
</AsamConfigProvider>
<div class="row">
<AsamButton type="default" @click="density = 'small'"> 继承 small </AsamButton>
<AsamButton type="default" @click="density = 'big'"> 继承 big </AsamButton>
</div>
<output>配置提供器:{{ density }}</output>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamTreeSelectSizesExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamConfigProvider, AsamButton } from '@asam-ui/ui';
const density = ref('big');
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
ASAM 扩展与迁移 ​
ASAM 扩展包括四档密度及 value/object、array/string 模型策略。 完整说明。
模型与 change 载荷由值模式和单多选策略共同决定。 完整说明。
native 模式的 TS 父模型使用 ref<AsamTreeSelectNativeProps['modelValue']>,保留原生标量、对象、多选及空值声明;数字或数组初值不应取代完整的原生模型契约。
API 阅读方式 ​
下方 Props、Events、Slots、Exposes 按当前实际公开类型与运行默认值生成。组合属性按分支生效,不能任意混搭值模式。标为“未知 / 未声明”的默认值不代表 false 或空值。源码区域提供对应语言的独立 Demo.vue,可直接复制或下载;本地辅助组件、数据和素材已内联到当前文件。
原生协议完整用法与 API ​
以下用法对应固定 2.14.7。Cascader 与 TreeSelect 的示例显式使用 value-mode="native";其原生值、路径、字段映射和回调不能直接套到标准化模式。API 表保留原生默认值,ASAM 覆盖值与四档尺寸以下列约定为准。
树形选择器以可展开的树结构提供下拉选择, 同时提供原生树控件和选择器的对应能力。
基础用法 ​
树状选择器
基础用法
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/basic.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/basic.vue
import { ref } from 'vue';
const value = ref();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
选择任意级别 ​
设置 check-strictly=true 时,可以选中任意层级的节点;
否则仅支持选中叶子节点。
使用提示
启用 show-checkbox 时,check-on-click-node 默认为 false,
默认只能通过复选框选择;将其设置为 true 后,
也可以点击节点进行选择。
选择任意级别
<template>
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
<AsamDivider />
显示复选框并启用 check-on-click-node:
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
show-checkbox
check-on-click-node
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/check-strictly.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
<template>
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
<AsamDivider />
显示复选框并启用 check-on-click-node:
<AsamTreeSelect
value-mode="native"
v-model="value"
:data="data"
check-strictly
:render-after-expand="false"
show-checkbox
check-on-click-node
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/check-strictly.vue
import { ref } from 'vue';
const value = ref();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
使用提示
使用 show-checkbox 时,check-on-click-leaf 默认为 true,
点击叶子节点本身即可切换其选中状态。
多选 ​
通过点击或复选框选择多个选项。
多选
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
multiple
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
multiple
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
<AsamDivider />
显示复选框并启用 check-strictly:
<AsamTreeSelect
value-mode="native"
v-model="valueStrictly"
:data="data"
multiple
:render-after-expand="false"
show-checkbox
check-strictly
check-on-click-node
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/multiple.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const valueStrictly = ref<AsamTreeSelectNativeProps['modelValue']>();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
multiple
:render-after-expand="false"
style="width: 240px"
/>
<AsamDivider />
显示复选框:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
multiple
:render-after-expand="false"
show-checkbox
style="width: 240px"
/>
<AsamDivider />
显示复选框并启用 check-strictly:
<AsamTreeSelect
value-mode="native"
v-model="valueStrictly"
:data="data"
multiple
:render-after-expand="false"
show-checkbox
check-strictly
check-on-click-node
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/multiple.vue
import { ref } from 'vue';
const value = ref();
const valueStrictly = ref();
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
禁用选项 ​
使用 disabled 字段禁用选项。
禁用选项
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect } from '@asam-ui/ui';
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/disabled.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const data = [
{
value: '1',
label: '一级节点 1',
disabled: true,
children: [
{
value: '1-1',
label: '二级节点 1-1',
disabled: true,
children: [
{
disabled: true,
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/disabled.vue
import { ref } from 'vue';
const value = ref();
const data = [
{
value: '1',
label: '一级节点 1',
disabled: true,
children: [
{
value: '1-1',
label: '二级节点 1-1',
disabled: true,
children: [
{
disabled: true,
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
可筛选 ​
可以使用关键字筛选,也可以自定义筛选方法。
filterMethod 用于自定义数据筛选方法,
filterNodeMethod 用于自定义树节点的筛选方法。
可筛选
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
filterable
style="width: 240px"
/>
<AsamDivider />
筛选方法:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:filter-method="filterMethod"
filterable
style="width: 240px"
/>
<AsamDivider />
节点筛选方法:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:filter-node-method="filterNodeMethod"
filterable
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/filterable.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const sourceData = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
const data = ref(sourceData);
const filterMethod = (value: string) => {
data.value = [...sourceData].filter((item) => item.label.includes(value));
};
import type { AsamTreeFilterNodeMethodFunction, AsamTreeSelectNativeProps } from '@asam-ui/ui';
const filterNodeMethod: AsamTreeFilterNodeMethodFunction = (value, data) =>
String(data.label).includes(String(value));
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
filterable
style="width: 240px"
/>
<AsamDivider />
筛选方法:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:filter-method="filterMethod"
filterable
style="width: 240px"
/>
<AsamDivider />
节点筛选方法:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:filter-node-method="filterNodeMethod"
filterable
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/filterable.vue
import { ref } from 'vue';
const value = ref();
const sourceData = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
const data = ref(sourceData);
const filterMethod = (value) => {
data.value = [...sourceData].filter((item) => item.label.includes(value));
};
const filterNodeMethod = (value, data) => String(data.label).includes(String(value));
</script>
设置文案 ​
自定义树节点的内容。
设置文案
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
style="width: 240px"
>
<template #default="{ data: { label } }">
{{ label }}<span style="color: gray">(后缀)</span>
</template>
</AsamTreeSelect>
<AsamDivider />
使用渲染内容:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-content="renderContent"
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/slots.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
import type { AsamTreeRenderContentFunction, AsamTreeSelectNativeProps } from '@asam-ui/ui';
const renderContent: AsamTreeRenderContentFunction = (h, { data }) => {
return h(
'span',
{
style: {
color: 'var(--asam-color-primary)'
}
},
data.label
);
};
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
style="width: 240px"
>
<template #default="{ data: { label } }">
{{ label }}<span style="color: gray">(后缀)</span>
</template>
</AsamTreeSelect>
<AsamDivider />
使用渲染内容:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
:data="data"
:render-content="renderContent"
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/slots.vue
import { ref } from 'vue';
const value = ref();
const renderContent = (h, { data }) => {
return h(
'span',
{
style: {
color: 'var(--asam-color-primary)'
}
},
data.label
);
};
const data = [
{
value: '1',
label: '一级节点 1',
children: [
{
value: '1-1',
label: '二级节点 1-1',
children: [
{
value: '1-1-1',
label: '三级节点 1-1-1'
}
]
}
]
},
{
value: '2',
label: '一级节点 2',
children: [
{
value: '2-1',
label: '二级节点 2-1',
children: [
{
value: '2-1-1',
label: '三级节点 2-1-1'
}
]
},
{
value: '2-2',
label: '二级节点 2-2',
children: [
{
value: '2-2-1',
label: '三级节点 2-2-1'
}
]
}
]
},
{
value: '3',
label: '一级节点 3',
children: [
{
value: '3-1',
label: '二级节点 3-1',
children: [
{
value: '3-1-1',
label: '三级节点 3-1-1'
}
]
},
{
value: '3-2',
label: '二级节点 3-2',
children: [
{
value: '3-2-1',
label: '三级节点 3-2-1'
}
]
}
]
}
];
</script>
在固定依赖 2.14.7 / Vue 3.5.34 的已核验输入中,首次挂载未提供 default 插槽,随后向同一实例动态新增该插槽时,新节点内容未显示;原生树选择器与 ASAM native 路径结果一致。 完整说明。
懒加载 ​
树节点懒加载,更加适合于数据量大的列表。
懒加载
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
lazy
:load="load"
:props="props"
style="width: 240px"
/>
<AsamDivider />
<span>缓存回填</span> 显示懒加载标签:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value2"
lazy
:load="load"
:props="props"
:cache-data="cacheData"
style="width: 240px"
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/lazy.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>();
const value2 = ref<AsamTreeSelectNativeProps['modelValue']>(5);
const cacheData = [{ value: 5, label: '节点五(懒加载)' }];
const props = {
label: 'label',
children: 'children',
isLeaf: 'isLeaf'
};
let id = 0;
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
const load: NonNullable<AsamTreeSelectNativeProps['load']> = (node, resolve) => {
if (node.isLeaf) return resolve([]);
setTimeout(() => {
resolve([
{
value: ++id,
label: `懒加载节点${id}`
},
{
value: ++id,
label: `懒加载节点${id}`,
isLeaf: true
}
]);
}, 400);
};
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
lazy
:load="load"
:props="props"
style="width: 240px"
/>
<AsamDivider />
<span>缓存回填</span> 显示懒加载标签:
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value2"
lazy
:load="load"
:props="props"
:cache-data="cacheData"
style="width: 240px"
/>
</template>
<script setup>
import { AsamTreeSelect, AsamDivider } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/lazy.vue
import { ref } from 'vue';
const value = ref();
const value2 = ref(5);
const cacheData = [{ value: 5, label: '节点五(懒加载)' }];
const props = {
label: 'label',
children: 'children',
isLeaf: 'isLeaf'
};
let id = 0;
const load = (node, resolve) => {
if (node.isLeaf) return resolve([]);
setTimeout(() => {
resolve([
{
value: ++id,
label: `懒加载节点${id}`
},
{
value: ++id,
label: `懒加载节点${id}`,
isLeaf: true
}
]);
}, 400);
};
</script>
使用 node-key 属性 ​
原生模式下,modelValue 默认匹配节点的 value 字段。
采用其他数据结构时,需要提供 node-key 才能正确匹配。
使用提示
node-key对应的值必须在整棵树中唯一。- 这里
value-key与node-key用于对应的值匹配。 - 原生树选择模式不直接返回对象值;ASAM 的对象协议模式请参阅本页对应说明。
使用 node-key 属性
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
style="width: 240px"
:data="data"
node-key="id"
show-checkbox
multiple
default-expand-all
/>
</template>
<script lang="ts" setup>
import { AsamTreeSelect } from '@asam-ui/ui';
import type { AsamTreeSelectNativeProps } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/node-key.vue
import { ref } from 'vue';
const value = ref<AsamTreeSelectNativeProps['modelValue']>([2]);
const data = [
{
id: 1,
label: '一级节点 1',
children: [
{
id: 2,
label: '二级节点 1-1'
},
{
id: 3,
label: '二级节点 1-2'
}
]
}
];
</script>
<template>
<AsamTreeSelect
:check-strictly="false"
value-mode="native"
v-model="value"
style="width: 240px"
:data="data"
node-key="id"
show-checkbox
multiple
default-expand-all
/>
</template>
<script setup>
import { AsamTreeSelect } from '@asam-ui/ui';
// Adapted from the fixed upstream MIT example: tree-select/node-key.vue
import { ref } from 'vue';
const value = ref([2]);
const data = [
{
id: 1,
label: '一级节点 1',
children: [
{
id: 2,
label: '二级节点 1-1'
},
{
id: 3,
label: '二级节点 1-2'
}
]
}
];
</script>
应用开发接口(API) ​
属性 ​
该组件承接原生树控件和选择器的相应公开能力, 对应原生参数的含义保持不变,此处不重复说明, 可结合树控件、选择器及本页的公开 API 文档查阅。
自有属性 ​
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| cache-data | 懒加载节点的缓存数据,结构与数据相同,用于获取未加载数据的标签 | arrayCacheOption[] |
[] |
暴露 ​
使用提示
上游已将 TreeSelect 直接暴露的树与选择器旧入口标为 deprecated(已弃用),计划在底层依赖 3.0.0 移除。当前固定依赖 2.14.7 仍保留这些入口,ASAM 继续原生委托;弃用说明不表示当前版本已删除能力。
新代码通过当前 treeRef / selectRef 访问对应组件实例。 完整说明。
| 名称 | 说明 | 类型 | 状态与迁移 |
|---|---|---|---|
| treeRef | Tree 组件实例 | AsamTreeInstance |
当前组件实例入口(2.11.3 起) |
| selectRef | Select 组件实例 | AsamTreeSelectExpose['selectRef'] |
当前组件实例入口(2.11.3 起) |
| filter | 过滤所有树节点,过滤后的节点将被隐藏 | 接收一个参数,作为 filter-node-method 的第一个参数。 | 已弃用;使用 treeRef.filter |
| updateKeyChildren | 为节点设置新数据,只有当设置 node-key 属性的时候才可用 | (key, data):节点的 key 与新的节点数据。 | 已弃用;使用 treeRef.updateKeyChildren |
| getCheckedNodes | 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 | (leafOnly, includeHalfChecked):两个布尔参数,默认均为 false。leafOnly 为 true 时仅返回选中的叶子节点;includeHalfChecked 为 true 时包含半选节点。 | 已弃用;使用 treeRef.getCheckedNodes |
| setCheckedNodes | 设置目前选中的节点,使用此方法必须设置 node-key 属性 | 待选中的节点对象数组。 | 已弃用;使用 treeRef.setCheckedNodes |
| getCheckedKeys | 若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 | (leafOnly):布尔参数,默认 false;为 true 时仅返回选中叶子节点的 key。 | 已弃用;使用 treeRef.getCheckedKeys |
| setCheckedKeys | 设置目前选中的节点,使用此方法必须设置 node-key 属性 | (keys, leafOnly):待选中节点的 key 数组与布尔参数。leafOnly 默认 false;为 true 时仅设置叶子节点的选中状态。 | 已弃用;使用 treeRef.setCheckedKeys |
| setChecked | 设置节点是否被选中, 使用此方法必须设置 node-key 属性 | (key/data, checked, deep):节点 key 或数据、是否选中,以及是否递归设置子节点。递归设置不受 check-strictly 限制。此递归行为自 2.14.0 起生效。 | 已弃用;使用 treeRef.setChecked |
| getHalfCheckedNodes | 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 | — | 已弃用;使用 treeRef.getHalfCheckedNodes |
| getHalfCheckedKeys | 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 | — | 已弃用;使用 treeRef.getHalfCheckedKeys |
| getCurrentKey | 返回当前被选中节点的数据 (如果没有则返回 null) | — | 已弃用;使用 treeRef.getCurrentKey |
| getCurrentNode | 返回当前被选中节点的数据 (如果没有则返回 null) | — | 已弃用;使用 treeRef.getCurrentNode |
| setCurrentKey | 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (key, shouldAutoExpandParent=true):待高亮节点的 key;传入 null 时取消高亮。第二个参数控制是否自动展开父节点。 | 已弃用;使用 treeRef.setCurrentKey |
| setCurrentNode | 设置节点为选中状态,使用此方法必须设置 node-key 属性 | (node, shouldAutoExpandParent=true):待高亮节点,以及是否自动展开父节点。 | 已弃用;使用 treeRef.setCurrentNode |
| getNode | 根据 data 或者 key 拿到 Tree 组件中的 node | (data):节点数据或 key。 | 已弃用;使用 treeRef.getNode |
| remove | 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 | (data):待删除节点的数据或节点对象。 | 已弃用;使用 treeRef.remove |
| append | 为 Tree 中的一个节点追加一个子节点 | (data, parentNode):待追加子节点的数据,以及父节点的数据、key 或节点对象。 | 已弃用;使用 treeRef.append |
| insertBefore | 在 Tree 中给定节点前插入一个节点 | (data, refNode):待插入节点的数据,以及参照节点的数据、key 或节点对象。 | 已弃用;使用 treeRef.insertBefore |
| insertAfter | 在 Tree 中给定节点后插入一个节点 | (data, refNode):待插入节点的数据,以及参照节点的数据、key 或节点对象。 | 已弃用;使用 treeRef.insertAfter |
| focus | 使选择器的输入框获取焦点 | Function() => void |
已弃用;使用 selectRef.focus |
| blur | 使选择器的输入框失去焦点,并隐藏下拉框 | Function() => void |
已弃用;使用 selectRef.blur |
| selectedLabel | 获取当前选中的标签 | objectComputedRef<string | string[]> |
已弃用;使用 selectRef.selectedLabel |
ASAM 模式与默认值 ​
默认 valueMode="value",单选返回叶值或 TreeSelect 节点值,清空为 null;valueMode="object" 返回带 raw 的节点对象,多选清空为 []。 完整说明。
标准化多选默认数组;value 模式可显式 multipleValueMode="string" 与 separator。 完整说明。
控件尺寸使用 large/big/default/small 四档及 ConfigProvider 的继承值。 完整说明。
TreeSelect 组合树和选择输入的原生能力:树的过滤、勾选、节点操作见 AsamTree,输入、标签、清空、浮层、键盘与命名插槽见 AsamSelect。 完整说明。
标准化懒加载 ​
load/lazyLoad 返回 { value, label, raw, children?, leaf?, isLeaf? },不是原生任意对象。 完整说明。
三模式动态模型、回填与源切换
<template>
<div class="hierarchy-example">
<p class="example-paragraph">依次展开“根节点”和子节点,加载两层;数字 0、false 与空字符串保留原类型。</p>
<label
>value<AsamTreeSelect
v-model="value"
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>object<AsamTreeSelect
v-model="objectValue"
value-mode="object"
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>多选<AsamTreeSelect
v-model="multiple"
multiple
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>字符串存储<AsamTreeSelect
v-model="tokens"
multiple
multiple-value-mode="string"
:options="stringOptions"
/></label>
<div>
<AsamButton type="default" @click="restore">回填数字 0</AsamButton
><AsamButton type="default" @click="clear">清空</AsamButton
><AsamButton type="default" @click="replace">切换源并丢弃迟到回调</AsamButton>
</div>
<output
>源 {{ version }};value={{ JSON.stringify(value) }};object={{
JSON.stringify(objectValue)
}};multiple={{ JSON.stringify(multiple) }};tokens={{ tokens }}</output
>
</div>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
import type { AsamTreeSelectLoad, AsamHierarchyOption, AsamValue } from '@asam-ui/ui';
const version = ref(1);
const value = ref<AsamValue | null>(null);
const objectValue = ref<AsamHierarchyOption | null>(null);
const multiple = ref<AsamValue[]>([]);
const tokens = ref('');
const stringOptions = [
{ value: 1, label: '一', raw: {} },
{ value: 2, label: '二', raw: {} }
];
const load = computed<AsamTreeSelectLoad>(() => {
const sourceVersion = version.value;
return (node, resolve) => {
setTimeout(() => {
resolve(
node.level === 0
? [
{
value: 'root',
label: '根节点 ' + sourceVersion,
raw: { sourceVersion },
leaf: false,
isLeaf: false
}
]
: [0, false, ''].map((value) => ({
value,
label:
typeof value +
':' +
JSON.stringify(value) +
' / 源' +
sourceVersion,
raw: { sourceVersion },
leaf: true,
isLeaf: true
}))
);
}, 400);
};
});
function restore() {
value.value = 0;
objectValue.value = { value: 0, label: '回填 0', raw: { restored: true } };
}
function clear() {
value.value = null;
objectValue.value = null;
multiple.value = [];
tokens.value = '';
}
function replace() {
clear();
version.value++;
}
</script>
<style scoped>
.hierarchy-example {
display: grid;
gap: var(--asam-space-md);
}
label {
display: flex;
align-items: center;
gap: var(--asam-space-sm);
}
output {
overflow-wrap: anywhere;
}
</style>
<style scoped>
p:where(.example-paragraph) {
margin-block: 16px;
line-height: 1.8;
overflow-wrap: anywhere;
}
</style>
<template>
<div class="hierarchy-example">
<p class="example-paragraph">依次展开“根节点”和子节点,加载两层;数字 0、false 与空字符串保留原类型。</p>
<label
>value<AsamTreeSelect
v-model="value"
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>object<AsamTreeSelect
v-model="objectValue"
value-mode="object"
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>多选<AsamTreeSelect
v-model="multiple"
multiple
lazy
:load="load"
:props="{ isLeaf: 'isLeaf' }"
clearable
/></label>
<label
>字符串存储<AsamTreeSelect
v-model="tokens"
multiple
multiple-value-mode="string"
:options="stringOptions"
/></label>
<div>
<AsamButton type="default" @click="restore">回填数字 0</AsamButton
><AsamButton type="default" @click="clear">清空</AsamButton
><AsamButton type="default" @click="replace">切换源并丢弃迟到回调</AsamButton>
</div>
<output
>源 {{ version }};value={{ JSON.stringify(value) }};object={{
JSON.stringify(objectValue)
}};multiple={{ JSON.stringify(multiple) }};tokens={{ tokens }}</output
>
</div>
</template>
<script setup>
import { computed, ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
const version = ref(1);
const value = ref(null);
const objectValue = ref(null);
const multiple = ref([]);
const tokens = ref('');
const stringOptions = [
{ value: 1, label: '一', raw: {} },
{ value: 2, label: '二', raw: {} }
];
const load = computed(() => {
const sourceVersion = version.value;
return (node, resolve) => {
setTimeout(() => {
resolve(
node.level === 0
? [
{
value: 'root',
label: '根节点 ' + sourceVersion,
raw: { sourceVersion },
leaf: false,
isLeaf: false
}
]
: [0, false, ''].map((value) => ({
value,
label:
typeof value +
':' +
JSON.stringify(value) +
' / 源' +
sourceVersion,
raw: { sourceVersion },
leaf: true,
isLeaf: true
}))
);
}, 400);
};
});
function restore() {
value.value = 0;
objectValue.value = { value: 0, label: '回填 0', raw: { restored: true } };
}
function clear() {
value.value = null;
objectValue.value = null;
multiple.value = [];
tokens.value = '';
}
function replace() {
clear();
version.value++;
}
</script>
<style scoped>
.hierarchy-example {
display: grid;
gap: var(--asam-space-md);
}
label {
display: flex;
align-items: center;
gap: var(--asam-space-sm);
}
output {
overflow-wrap: anywhere;
}
</style>
<style scoped>
p:where(.example-paragraph) {
margin-block: 16px;
line-height: 1.8;
overflow-wrap: anywhere;
}
</style>
继承滚动事件与标签包装项 ​
下拉滚动到边缘时,end-reached 返回 top、bottom、left 或 right。 完整说明。
继承滚动事件与标签包装项
<template>
<div class="inherited-contracts-example">
<AsamTreeSelect
v-model="value"
:options="options"
multiple
@end-reached="ends.push($event)"
>
<template #tag="{ data, selectDisabled, deleteTag }">
<AsamButton
type="default"
v-for="option in data"
:key="String(option.value)"
native-type="button"
:disabled="selectDisabled || option.isDisabled"
:data-tag-value="String(option.value)"
@click.stop="deleteTag($event, option)"
>
{{ option.currentLabel }} ×
</AsamButton>
</template>
</AsamTreeSelect>
<output data-contract="model">{{ JSON.stringify(value) }}</output>
<output data-contract="ends">{{ JSON.stringify(ends) }}</output>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { AsamButton, AsamTreeSelect } from '@asam-ui/ui';
import type { AsamTreeSelectEmits } from '@asam-ui/ui';
const value = ref<number[]>([1, 2]);
const ends = ref<AsamTreeSelectEmits['end-reached'][0][]>([]);
const options = Array.from({ length: 160 }, (_, value) => ({
value,
label: `标签行 ${value}`,
raw: {}
}));
</script>
<style scoped>
.inherited-contracts-example {
display: grid;
gap: var(--asam-space-sm);
}
</style>
<template>
<div class="inherited-contracts-example">
<AsamTreeSelect
v-model="value"
:options="options"
multiple
@end-reached="ends.push($event)"
>
<template #tag="{ data, selectDisabled, deleteTag }">
<AsamButton
type="default"
v-for="option in data"
:key="String(option.value)"
native-type="button"
:disabled="selectDisabled || option.isDisabled"
:data-tag-value="String(option.value)"
@click.stop="deleteTag($event, option)"
>
{{ option.currentLabel }} ×
</AsamButton>
</template>
</AsamTreeSelect>
<output data-contract="model">{{ JSON.stringify(value) }}</output>
<output data-contract="ends">{{ JSON.stringify(ends) }}</output>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { AsamButton, AsamTreeSelect } from '@asam-ui/ui';
const value = ref([1, 2]);
const ends = ref([]);
const options = Array.from({ length: 160 }, (_, value) => ({
value,
label: `标签行 ${value}`,
raw: {}
}));
</script>
<style scoped>
.inherited-contracts-example {
display: grid;
gap: var(--asam-space-sm);
}
</style>
原生透传与来源更新 ​
label 插槽继承 Select 的公开 scope:index 为 number,label/value 沿用原生公开槽的开放类型,具体操作须与实际节点值匹配。
valueMode="native" 直接委托原生树选择器,使用原始 data / nodeKey / props / load / cacheData,省略参数保持原生默认值。 完整说明。
局部与全局挂载 ​
切换公开挂载参数后,再打开浮层观察内容位于当前组件附近或挂载到 body。 开关显示当前模式,两个模式均可操作;关闭后可以再次切换。
局部与全局挂载
<template>
<div ref="mountTarget" class="popup-stage" :class="{ local: !globalPopup }">
<div class="popup-mode">
<ContainerSwitch
v-model="globalPopup"
active-text="全局挂载到 body"
inactive-text="局部挂载到当前区域"
/>
</div>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{ filterable: true, clearable: true, 'aria-label': '选择团队' }"
v-model="value"
:options="options"
@change="event = JSON.stringify($event)"
:teleported="globalPopup"
>
<template #default="{ data }"> {{ data.label }}节点 </template>
<template #empty> 没有可选节点 </template>
</AsamTreeSelect>
<AsamButton type="default" @click="control?.focus()"> 聚焦 </AsamButton>
<output>值:{{ value }};事件:{{ event }}</output>
</div>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamTreeSelectBasicExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
import type { AsamTreeSelectExpose } from '@asam-ui/ui';
const control = ref<AsamTreeSelectExpose>();
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const value = ref<string | null>('design');
const event = ref('尚未更改');
import { ref as containerRef } from 'vue';
import { AsamSwitch as ContainerSwitch } from '@asam-ui/ui';
const globalPopup = containerRef(true);
const mountTarget = containerRef<HTMLElement>();
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<style scoped>
.popup-stage {
position: relative;
isolation: isolate;
min-height: 140px;
padding: var(--asam-space-md);
border: 1px dashed var(--asam-color-border);
}
.popup-mode {
margin-bottom: var(--asam-space-lg);
}
</style>
<template>
<div ref="mountTarget" class="popup-stage" :class="{ local: !globalPopup }">
<div class="popup-mode">
<ContainerSwitch
v-model="globalPopup"
active-text="全局挂载到 body"
inactive-text="局部挂载到当前区域"
/>
</div>
<div class="example">
<AsamTreeSelect
ref="control"
v-bind="{ filterable: true, clearable: true, 'aria-label': '选择团队' }"
v-model="value"
:options="options"
@change="event = JSON.stringify($event)"
:teleported="globalPopup"
>
<template #default="{ data }"> {{ data.label }}节点 </template>
<template #empty> 没有可选节点 </template>
</AsamTreeSelect>
<AsamButton type="default" @click="control?.focus()"> 聚焦 </AsamButton>
<output>值:{{ value }};事件:{{ event }}</output>
</div>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamTreeSelectBasicExample' });
import { ref } from 'vue';
import { AsamTreeSelect, AsamButton } from '@asam-ui/ui';
const control = ref();
const options = [
{
label: '团队',
value: 'team',
raw: {},
children: [
{ label: '设计', value: 'design', raw: {} },
{ label: '开发', value: 'dev', raw: {} }
]
}
];
const value = ref('design');
const event = ref('尚未更改');
import { ref as containerRef } from 'vue';
import { AsamSwitch as ContainerSwitch } from '@asam-ui/ui';
const globalPopup = containerRef(true);
const mountTarget = containerRef();
</script>
<style scoped>
.example {
display: grid;
gap: var(--asam-space-md, 16px);
min-width: 0;
}
.row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--asam-space-sm, 8px);
}
.density-grid {
display: grid;
gap: var(--asam-space-md, 16px);
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}
section {
display: grid;
gap: var(--asam-space-sm, 8px);
min-width: 0;
}
output {
overflow-wrap: anywhere;
color: var(--asam-color-text-secondary);
}
</style>
<style scoped>
.popup-stage {
position: relative;
isolation: isolate;
min-height: 140px;
padding: var(--asam-space-md);
border: 1px dashed var(--asam-color-border);
}
.popup-mode {
margin-bottom: var(--asam-space-lg);
}
</style>
API
属性 AsamTreeSelectProps
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
options | 规范化静态选项。懒加载回调返回相同选项结构;远程来源使用独立组件。 | readonly AsamHierarchyOption<V, I>[] | undefined | Record<string, any>[] | undefined | () => [] |
separator | — | string | undefined | undefined | ',' |
disabled | — | boolean | undefined | (AsamTreeSelectProps<V, I>)["disabled"] | undefined |
placeholder | — | string | undefined | '请选择' |
filterable | — | boolean | undefined | false |
clearable | — | boolean | undefined | true |
teleported | — | boolean | undefined | (AsamTreeSelectProps<V, I>)["teleported"] | true |
size | — | enum"large" | "big" | "default" | "small"完整类型:AsamControlSize | undefined | undefined |
modelValue | — | 查看完整类型string | undefined | V | null | undefined | AsamHierarchyOption<V, I> | null | undefined | readonly V[] | undefined | readonly AsamHierarchyOption<V, I>[] | undefined | (AsamTreeSelectProps<V, I>)["modelValue"] | undefined |
multiple | — | true | false | undefined | boolean | undefined | false |
valueMode | — | enum"value" | "object" | "native"完整类型:"value" | undefined | "object" | "native" | 'value' |
multipleValueMode | — | enum"string" | "array"完整类型:"string" | undefined | "array" | undefined | undefined |
ariaLabel | — | string | undefined | — |
id | — | string | undefined | — |
effect | — | enum"light" | "dark"完整类型:(AsamTreeSelectProps<V, I>)["effect"] | "light" |
popperClass | — | (AsamTreeSelectProps<V, I>)["popperClass"] | "" |
popperStyle | — | (AsamTreeSelectProps<V, I>)["popperStyle"] | undefined |
fallbackPlacements | — | (AsamTreeSelectProps<V, I>)["fallbackPlacements"] | ["bottom-start","top-start","right","left"] |
offset | — | number | undefined | 12 |
placement | — | enum"auto" | "auto-start" | "auto-end" | "top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end"完整类型:(AsamTreeSelectProps<V, I>)["placement"] | "bottom-start" |
popperOptions | — | (AsamTreeSelectProps<V, I>)["popperOptions"] | 工厂函数(每个实例创建) |
showArrow | — | (AsamTreeSelectProps<V, I>)["showArrow"] | true |
appendTo | — | (AsamTreeSelectProps<V, I>)["appendTo"] | — |
persistent | — | (AsamTreeSelectProps<V, I>)["persistent"] | true |
tabindex | — | (AsamTreeSelectProps<V, I>)["tabindex"] | 0 |
emptyText | — | string | undefined | — |
defaultExpandAll | — | boolean | undefined | false |
indent | — | number | undefined | 18 |
lazy | — | boolean | undefined | false |
props | — | AsamTreeOptionProps | undefined | 工厂函数(每个实例创建) |
name | — | string | undefined | — |
icon | — | (AsamTreeSelectProps<V, I>)["icon"] | — |
accordion | — | boolean | undefined | false |
loading | — | boolean | undefined | false |
filterMethod | — | ((query: string) => void) | undefined | — |
renderAfterExpand | — | (AsamTreeSelectProps<V, I>)["renderAfterExpand"] | true |
nodeKey | — | string | undefined | — |
checkStrictly | — | boolean | undefined | true |
expandOnClickNode | — | (AsamTreeSelectProps<V, I>)["expandOnClickNode"] | true |
checkOnClickNode | — | boolean | undefined | false |
checkOnClickLeaf | — | (AsamTreeSelectProps<V, I>)["checkOnClickLeaf"] | true |
checkDescendants | — | boolean | undefined | false |
autoExpandParent | — | (AsamTreeSelectProps<V, I>)["autoExpandParent"] | true |
defaultCheckedKeys | — | AsamTreeKey[] | undefined | — |
defaultExpandedKeys | — | AsamTreeKey[] | undefined | — |
currentNodeKey | — | (AsamTreeSelectProps<V, I>)["currentNodeKey"] | — |
renderContent | — | AsamTreeRenderContentFunction | undefined | — |
showCheckbox | — | boolean | undefined | undefined |
draggable | — | boolean | undefined | false |
allowDrag | — | AsamTreeAllowDragFunction | undefined | — |
allowDrop | — | AsamTreeAllowDropFunction | undefined | — |
highlightCurrent | — | boolean | undefined | false |
filterNodeMethod | — | AsamTreeFilterNodeMethodFunction | undefined | — |
emptyValues | — | unknown[] | undefined | — |
valueOnClear | — | (AsamTreeSelectProps<V, I>)["valueOnClear"] | undefined |
validateEvent | — | (AsamTreeSelectProps<V, I>)["validateEvent"] | true |
automaticDropdown | — | boolean | undefined | false |
clearIcon | — | (AsamTreeSelectProps<V, I>)["clearIcon"] | {"name":"CircleClose","__name":"circle-close"} |
autocomplete | — | string | undefined | "off" |
allowCreate | — | boolean | undefined | false |
remote | — | boolean | undefined | false |
debounce | — | number | undefined | 300 |
loadingText | — | string | undefined | — |
noMatchText | — | string | undefined | — |
noDataText | — | string | undefined | — |
remoteMethod | — | ((query: string) => void) | undefined | — |
multipleLimit | — | number | undefined | 0 |
defaultFirstOption | — | boolean | undefined | false |
reserveKeyword | — | (AsamTreeSelectProps<V, I>)["reserveKeyword"] | true |
valueKey | — | string | undefined | "value" |
collapseTags | — | boolean | undefined | false |
collapseTagsTooltip | — | boolean | undefined | false |
tagTooltip | — | (AsamTreeSelectProps<V, I>)["tagTooltip"] | 工厂函数(每个实例创建) |
maxCollapseTags | — | number | undefined | 1 |
fitInputWidth | — | boolean | undefined | false |
suffixIcon | — | (AsamTreeSelectProps<V, I>)["suffixIcon"] | {"name":"ArrowDown","__name":"arrow-down"} |
tagType | — | enum"primary" | "success" | "danger" | "warning" | "info"完整类型:(AsamTreeSelectProps<V, I>)["tagType"] | "info" |
tagEffect | — | enum"light" | "dark" | "plain"完整类型:(AsamTreeSelectProps<V, I>)["tagEffect"] | "light" |
remoteShowSuffix | — | boolean | undefined | false |
load | — | AsamTreeSelectLoad<V, I> | undefined | AsamTreeLoadFunction | undefined | — |
cacheData | — | readonly AsamHierarchyOption<V, I>[] | undefined | unknown[] | undefined | 工厂函数(每个实例创建) |
data | — | AsamTreeData | undefined | 工厂函数(每个实例创建) |
插槽 AsamTreeSelectSlots
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
prefix | — | (() => unknown) | undefined | — |
loading | — | (() => unknown) | undefined | — |
footer | — | (() => unknown) | undefined | — |
header | — | (() => unknown) | undefined | — |
empty | — | (() => unknown) | undefined | — |
label | — | (AsamTreeSelectSlots)["label"] | — |
tag | — | 查看完整类型((scope: { data: AsamTreeSelectTagOption[]; selectDisabled: boolean; deleteTag: (event: MouseEvent, option: AsamTreeSelectTagOption) => void; }) => unknown) | undefined | — |
default | — | 查看完整类型((scope: Pick<AsamTreeRenderContentContext, "node" | "data" | "store"> & {
/** Added by normalized modes; native retains the upstream scope. */
option?: AsamHierarchyOption; }) => unknown) | undefined | — |
事件 AsamTreeSelectEmits
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
clear | — | (AsamTreeSelectEmits)["clear"] | — |
focus | — | [event: FocusEvent] | — |
current-change | — | (AsamTreeSelectEmits)["current-change"] | — |
check-change | — | [data: any, checked: boolean, indeterminate: boolean] | — |
node-click | — | (AsamTreeSelectEmits)["node-click"] | — |
node-contextmenu | — | (AsamTreeSelectEmits)["node-contextmenu"] | — |
node-collapse | — | (AsamTreeSelectEmits)["node-collapse"] | — |
node-expand | — | (AsamTreeSelectEmits)["node-expand"] | — |
check | — | [data: any, checkedInfo: AsamTreeCheckedInfo] | — |
node-drag-start | — | (AsamTreeSelectEmits)["node-drag-start"] | — |
node-drag-end | — | (AsamTreeSelectEmits)["node-drag-end"] | — |
node-drop | — | (AsamTreeSelectEmits)["node-drop"] | — |
node-drag-leave | — | (AsamTreeSelectEmits)["node-drag-leave"] | — |
node-drag-enter | — | (AsamTreeSelectEmits)["node-drag-enter"] | — |
node-drag-over | — | (AsamTreeSelectEmits)["node-drag-over"] | — |
blur | — | [event: FocusEvent] | — |
visible-change | — | [visible: boolean] | — |
remove-tag | — | [value: unknown] | — |
popup-scroll | — | [event: { scrollTop: number; scrollLeft: number; }] | — |
update:modelValue | — | (AsamTreeSelectEmits)["update:modelValue"] | — |
change | — | (AsamTreeSelectEmits)["change"] | — |
end-reached | — | [direction: AsamScrollbarDirection] | — |
实例方法与状态 AsamTreeSelectExpose
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
filter | — | (value: AsamTreeFilterValue) => void | — |
updateKeyChildren | — | (key: AsamTreeKey, data: AsamTreeData) => void | — |
getCheckedNodes | — | (leafOnly?: boolean, includeHalfChecked?: boolean) => AsamTreeNodeData[] | — |
getCheckedKeys | — | (leafOnly?: boolean) => AsamTreeKey[] | — |
getCurrentNode | — | () => AsamTreeNodeData | null | — |
getCurrentKey | — | () => AsamTreeKey | null | — |
setCheckedNodes | — | (AsamTreeSelectExpose)["setCheckedNodes"] | — |
setCheckedKeys | — | (keys: AsamTreeKey[], leafOnly?: boolean) => void | — |
setChecked | — | (data: AsamTreeKey | AsamTreeNodeData, checked: boolean, deep?: boolean) => void | — |
getHalfCheckedNodes | — | () => AsamTreeNodeData[] | — |
getHalfCheckedKeys | — | () => AsamTreeKey[] | — |
setCurrentNode | — | (AsamTreeSelectExpose)["setCurrentNode"] | — |
setCurrentKey | — | (key?: AsamTreeKey | null, shouldAutoExpandParent?: boolean) => void | — |
getNode | — | (AsamTreeSelectExpose)["getNode"] | — |
remove | — | (AsamTreeSelectExpose)["remove"] | — |
append | — | (AsamTreeSelectExpose)["append"] | — |
insertBefore | — | (AsamTreeSelectExpose)["insertBefore"] | — |
insertAfter | — | (AsamTreeSelectExpose)["insertAfter"] | — |
focus | — | () => void | — |
blur | — | () => void | — |
selectedLabel | — | string | string[] | — |
treeRef | — | (AsamTreeSelectExpose)["treeRef"] | — |
selectRef | — | (AsamTreeSelectExpose)["selectRef"] | — |
类型 AsamHierarchyOption
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
label | — | string | — |
value | — | V | — |
disabled | — | boolean | undefined | — |
raw | — | I | — |
children | — | (readonly AsamOption<V, I>[] & readonly AsamHierarchyOption<V, I>[]) | undefined | — |
leaf | 懒加载叶节点标记;自定义原生映射也可从 raw 读取字段。 | boolean | undefined | — |
isLeaf | — | boolean | undefined | — |
类型 AsamTreeSelectLoad
(node: Parameters<AsamTreeSelectLoad<V, I>>[0], resolve: (options: readonly AsamHierarchyOption<V, I>[]) => void, reject: () => void): void
类型 AsamTreeSelectNativeProps
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
ariaLabel | — | string | undefined | — |
id | — | string | undefined | — |
effect | — | enum"light" | "dark"完整类型:(AsamTreeSelectNativeProps)["effect"] | — |
popperClass | — | (AsamTreeSelectNativeProps)["popperClass"] | — |
popperStyle | — | (AsamTreeSelectNativeProps)["popperStyle"] | — |
fallbackPlacements | — | (AsamTreeSelectNativeProps)["fallbackPlacements"] | — |
offset | — | number | undefined | — |
placement | — | enum"auto" | "auto-start" | "auto-end" | "top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end"完整类型:(AsamTreeSelectNativeProps)["placement"] | — |
popperOptions | — | (AsamTreeSelectNativeProps)["popperOptions"] | — |
showArrow | — | (AsamTreeSelectNativeProps)["showArrow"] | — |
appendTo | — | (AsamTreeSelectNativeProps)["appendTo"] | — |
persistent | — | (AsamTreeSelectNativeProps)["persistent"] | — |
teleported | — | (AsamTreeSelectNativeProps)["teleported"] | — |
disabled | — | (AsamTreeSelectNativeProps)["disabled"] | — |
tabindex | — | (AsamTreeSelectNativeProps)["tabindex"] | — |
size | — | enum"" | "large" | "default" | "small"完整类型:(AsamTreeSelectNativeProps)["size"] | — |
data | — | AsamTreeData | undefined | — |
emptyText | — | string | undefined | — |
defaultExpandAll | — | boolean | undefined | — |
indent | — | number | undefined | — |
lazy | — | boolean | undefined | — |
load | — | AsamTreeLoadFunction | undefined | — |
props | — | AsamTreeOptionProps | undefined | — |
name | — | string | undefined | — |
icon | — | (AsamTreeSelectNativeProps)["icon"] | — |
modelValue | — | (AsamTreeSelectNativeProps)["modelValue"] | — |
accordion | — | boolean | undefined | — |
loading | — | boolean | undefined | — |
filterMethod | — | ((query: string) => void) | undefined | — |
renderAfterExpand | — | (AsamTreeSelectNativeProps)["renderAfterExpand"] | — |
nodeKey | — | string | undefined | — |
checkStrictly | — | boolean | undefined | — |
expandOnClickNode | — | (AsamTreeSelectNativeProps)["expandOnClickNode"] | — |
checkOnClickNode | — | boolean | undefined | — |
checkOnClickLeaf | — | (AsamTreeSelectNativeProps)["checkOnClickLeaf"] | — |
checkDescendants | — | boolean | undefined | — |
autoExpandParent | — | (AsamTreeSelectNativeProps)["autoExpandParent"] | — |
defaultCheckedKeys | — | AsamTreeKey[] | undefined | — |
defaultExpandedKeys | — | AsamTreeKey[] | undefined | — |
currentNodeKey | — | (AsamTreeSelectNativeProps)["currentNodeKey"] | — |
renderContent | — | AsamTreeRenderContentFunction | undefined | — |
showCheckbox | — | boolean | undefined | — |
draggable | — | boolean | undefined | — |
allowDrag | — | AsamTreeAllowDragFunction | undefined | — |
allowDrop | — | AsamTreeAllowDropFunction | undefined | — |
highlightCurrent | — | boolean | undefined | — |
filterNodeMethod | — | AsamTreeFilterNodeMethodFunction | undefined | — |
options | — | Record<string, any>[] | undefined | — |
multiple | — | boolean | undefined | — |
emptyValues | — | unknown[] | undefined | — |
valueOnClear | — | (AsamTreeSelectNativeProps)["valueOnClear"] | — |
validateEvent | — | (AsamTreeSelectNativeProps)["validateEvent"] | — |
clearable | — | boolean | undefined | — |
automaticDropdown | — | boolean | undefined | — |
clearIcon | — | (AsamTreeSelectNativeProps)["clearIcon"] | — |
placeholder | — | string | undefined | — |
autocomplete | — | string | undefined | — |
filterable | — | boolean | undefined | — |
allowCreate | — | boolean | undefined | — |
remote | — | boolean | undefined | — |
debounce | — | number | undefined | — |
loadingText | — | string | undefined | — |
noMatchText | — | string | undefined | — |
noDataText | — | string | undefined | — |
remoteMethod | — | ((query: string) => void) | undefined | — |
multipleLimit | — | number | undefined | — |
defaultFirstOption | — | boolean | undefined | — |
reserveKeyword | — | (AsamTreeSelectNativeProps)["reserveKeyword"] | — |
valueKey | — | string | undefined | — |
collapseTags | — | boolean | undefined | — |
collapseTagsTooltip | — | boolean | undefined | — |
tagTooltip | — | (AsamTreeSelectNativeProps)["tagTooltip"] | — |
maxCollapseTags | — | number | undefined | — |
fitInputWidth | — | boolean | undefined | — |
suffixIcon | — | (AsamTreeSelectNativeProps)["suffixIcon"] | — |
tagType | — | enum"primary" | "success" | "danger" | "warning" | "info"完整类型:(AsamTreeSelectNativeProps)["tagType"] | — |
tagEffect | — | enum"light" | "dark" | "plain"完整类型:(AsamTreeSelectNativeProps)["tagEffect"] | — |
remoteShowSuffix | — | boolean | undefined | — |
cacheData | — | unknown[] | undefined | — |
类型 AsamTreeSelectTagOption
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
index | — | number | — |
value | — | (AsamTreeSelectTagOption)["value"] | — |
currentLabel | — | string | number | boolean | — |
isDisabled | — | boolean | undefined | — |
用法与契约补充说明 ​
ASAM 扩展与迁移 ​
ASAM 扩展包括四档密度及 value/object、array/string 模型策略。静态组件不处理 request/dictType;未知值保留回显,选项到达后重新解析。native 模式直接使用原始 data 和字段映射,禁止混入规范化字符串存储。树选择提供公开树实例方法,级联提供 focus/blur、节点读取和弹层操作;具体列表见 API。
设置文案 ​
在固定依赖 2.14.7 / Vue 3.5.34 的已核验输入中,首次挂载未提供 default 插槽,随后向同一实例动态新增该插槽时,新节点内容未显示;原生树选择器与 ASAM native 路径结果一致。首次挂载即提供 default 的新实例对照能够显示内容。因此这项“初始缺省 → 动态新增”表现属于原生兼容限制,不保证新增内容可见。内容替换、删除和其他插槽按各自独立核验结果判断。
暴露 ​
新代码通过当前 treeRef / selectRef 访问对应组件实例。下表逐项给出迁移位置:18 个树方法在 treeRef 上调用,focus / blur 在 selectRef 上调用,selectedLabel 从 selectRef 读取,保持原参数和返回值。例如 control.value?.treeRef.filter(query)、control.value?.selectRef.focus()、control.value?.selectRef.selectedLabel;selectedLabel 是公开值,不是方法。引用指向实时原生实例,调用时保留组件层级。
ASAM 模式与默认值 ​
默认 valueMode="value",单选返回叶值或 TreeSelect 节点值,清空为 null;valueMode="object" 返回带 raw 的节点对象,多选清空为 []。0、false 与空字符串都是有效值。标准化 Cascader 固定 emitPath=false,需要完整路径使用 native。Cascader 顶层 multiple 显式值优先,未指定时读取 props.multiple。TreeSelect 默认 checkStrictly=true,显式 false 恢复父子联动;默认多选显示勾选框,显式 showCheckbox=false 可关闭。
ASAM 模式与默认值 ​
标准化多选默认数组;value 模式可显式 multipleValueMode="string" 与 separator。分隔符不能为空,值不能包含分隔符,全树序列化 token 不得冲突。object 与 native 不接受字符串存储策略。未知选中值保留回填,已加载节点提供实际显示标签,不主动改写宿主旧对象。loader/options/valueMode 变更隔离迟到回调。
ASAM 模式与默认值 ​
控件尺寸使用 large/big/default/small 四档及 ConfigProvider 的继承值。原生表中的 large/default/small 是底层尺寸,不能作为 ASAM 尺寸全集。基础组件只接收 options 或宿主 lazy 回调;Remote/Dict 的 provider、搜索及完整树获取属于对应数据入口。
ASAM 模式与默认值 ​
TreeSelect 组合树和选择输入的原生能力:树的过滤、勾选、节点操作见 AsamTree,输入、标签、清空、浮层、键盘与命名插槽见 AsamSelect。本入口的标准化 options/model/cacheData 与 default 节点插槽仍以上面自己的契约为准,不能直接换用平行入口的 ASAM 数据模型。Cascader 的 expandChange/visibleChange/removeTag 专有事件不属于 TreeSelect;TreeSelect 使用 visible-change/remove-tag 及真实节点事件。
标准化懒加载 ​
load/lazyLoad 返回 { value, label, raw, children?, leaf?, isLeaf? },不是原生任意对象。Cascader 默认读取 leaf,TreeSelect 默认读取 isLeaf;自定义字段通过 props.leaf/props.isLeaf 映射,额外业务字段可来自 raw。内部实例 key 为带类型字符串,业务 v-model 保留原值;原生模式使用原始 key。每次 loader 的 resolve 仅接收一次,重复值、循环树或不合法字符串序列化会抛类型错误;reject 保留原生失败重试语义。内联 props 重建但 loader 本身未变时不会重复初始化动态节点。validateEvent=false 停止包装层的 change 验证,表单 disabled 继续由原生上下文继承。
继承滚动事件与标签包装项 ​
下拉滚动到边缘时,end-reached 返回 top、bottom、left 或 right。事件来自真实下拉滚动条,与 popup-scroll 的位置对象不同。tag 插槽 data 是 AsamTreeSelectTagOption 数组:每项包含 currentLabel、value、index,以及可选 isDisabled;deleteTag 接收 MouseEvent 和该包装项,不能只传业务值。规范化模式的包装项 value 使用内部原生键,因此删除时应传完整包装项;业务 v-model 仍返回原始业务值。该结构用于 TreeSelect,不改变级联标签的独立类型。
原生透传与来源更新 ​
valueMode="native" 直接委托原生树选择器,使用原始 data / nodeKey / props / load / cacheData,省略参数保持原生默认值。原生 default 插槽接收原生 { data, node, store };高级规范化路径增加可选 option。基础来源更新不因 ASAM 高级 source epoch 强制重建组件;懒加载、节点勾选和选择算法由原生处理。treeRef/selectRef 及全部公开方法实时委托,返回值和 this 保留。高级 value/object、array/string、规范化 lazy 数据、未解析选项和校验协议仍按本页原契约工作。
更多参数与事件说明 ​
ASAM 扩展与迁移 ​
模板中的 update:modelValue 与 change 按当前 valueMode、顶层或级联嵌套 multiple、multipleValueMode 推断:单值为节点值或 null,单对象为规范化节点或 null,多选为可写值数组或对象数组,字符串存储为 string(清空为 '')。camelCase 与 kebab-case 属性遵循同一约束;单选父 ref 必须允许 null,不得用全模式 union 代替当前模式。native 保留原生声明的模型 union 和原生清空值,不能将路径/多选示例的初始数组视为所有返回形状。TS 示例中的窄类型声明可直接复制。
关联组件
参数与事件补充说明
组合契约按分支生效;请同时查看公开类型。
参数与事件说明
options
必填:否;声明来源:ASAM 声明。
默认值与来源
() => [](源码表达式;ASAM 声明)separator
必填:否;声明来源:ASAM 声明。
默认值与来源
','(源码表达式;ASAM 声明)disabled
必填:否;声明来源:ASAM 声明。
disabled 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
枚举:false / true
默认值与来源
undefined(已安装运行时;已安装组件)placeholder
必填:否;声明来源:ASAM 声明。
默认值与来源
'请选择'(源码表达式;ASAM 声明)filterable
必填:否;声明来源:ASAM 声明。
filterable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)clearable
必填:否;声明来源:ASAM 声明。
clearable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
枚举:false / true
默认值与来源
true(源码表达式;ASAM 声明)teleported
必填:否;声明来源:ASAM 声明。
teleported 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)size
必填:否;声明来源:ASAM 声明。
size 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"large" / "big" / "default" / "small"
默认值与来源
undefined(源码表达式;ASAM 声明)modelValue
必填:否;声明来源:ASAM 声明。
modelValue 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
undefined(源码表达式;ASAM 声明)multiple
必填:否;声明来源:ASAM 声明。
multiple 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:true
枚举:false
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)valueMode
必填:否;声明来源:ASAM 声明。
valueMode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"value"
枚举:"object"
枚举:"native"
默认值与来源
'value'(源码表达式;ASAM 声明)multipleValueMode
必填:否;声明来源:ASAM 声明。
multipleValueMode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"string"
枚举:"array"
默认值与来源
undefined(源码表达式;ASAM 声明)ariaLabel
必填:否;声明来源:上游声明。
id
必填:否;声明来源:上游声明。
effect
必填:否;声明来源:上游声明。
effect 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"light" / "dark"
默认值与来源
"light"(已安装运行时;已安装组件)popperClass
必填:否;声明来源:上游声明。
popperClass 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false
默认值与来源
""(已安装运行时;已安装组件)popperStyle
必填:否;声明来源:上游声明。
popperStyle 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
默认值与来源
undefined(已安装运行时;已安装组件)fallbackPlacements
必填:否;声明来源:上游声明。
默认值与来源
["bottom-start","top-start","right","left"](已安装运行时;已安装组件)offset
必填:否;声明来源:上游声明。
默认值与来源
12(已安装运行时;已安装组件)placement
必填:否;声明来源:上游声明。
placement 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"auto" / "auto-start" / "auto-end" / "top" / "bottom" / "right" / "left" / "top-start" / "top-end" / "bottom-start" / "bottom-end" / "right-start" / "right-end" / "left-start" / "left-end"
默认值与来源
"bottom-start"(已安装运行时;已安装组件)popperOptions
必填:否;声明来源:上游声明。
popperOptions 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
popperOptions.placement:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["popperOptions"]>, "placement">— 依赖声明枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"popperOptions.modifiers:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["popperOptions"]>, "modifiers">— 依赖声明popperOptions.strategy:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["popperOptions"]>, "strategy">— 依赖声明枚举:
"fixed"/"absolute"popperOptions.onFirstUpdate:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["popperOptions"]>, "onFirstUpdate">— 依赖声明事件参数:
(arg0: Parameters<Extract<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["popperOptions"]>, "onFirstUpdate">>, (...args: never[]) => unknown>>[0]): void
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)showArrow
必填:否;声明来源:上游声明。
showArrow 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)appendTo
必填:否;声明来源:上游声明。
appendTo 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
persistent
必填:否;声明来源:上游声明。
persistent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)tabindex
必填:否;声明来源:上游声明。
默认值与来源
0(已安装运行时;已安装组件)emptyText
必填:否;声明来源:上游声明。
defaultExpandAll
必填:否;声明来源:上游声明。
defaultExpandAll 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)indent
必填:否;声明来源:上游声明。
默认值与来源
18(已安装运行时;已安装组件)lazy
必填:否;声明来源:上游声明。
lazy 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)props
必填:否;声明来源:上游声明。
props 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
props.children:string | undefined— 上游声明指定子树为节点对象的某个属性值
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)props.label:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "label">— 上游声明指定节点标签为节点对象的某个属性值
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "label">>, (...args: never[]) => unknown>>[1]): stringprops.disabled:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "disabled">— 上游声明指定节点选择框是否禁用为节点对象的某个属性值
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "disabled">>, (...args: never[]) => unknown>>[1]): booleanprops.isLeaf:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "isLeaf">— 上游声明指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "isLeaf">>, (...args: never[]) => unknown>>[1]): booleanprops.class:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "class">— 上游声明自定义节点类名
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "class">>, (...args: never[]) => unknown>>[1]): string | { [key: string]: boolean; }
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)name
必填:否;声明来源:上游声明。
icon
必填:否;声明来源:上游声明。
icon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectProps<V, I>)["icon"]>, (...args: never[]) => unknown>>[1]): any
icon.__isFragment:undefined— 依赖声明icon.__isTeleport:undefined— 依赖声明icon.__isSuspense:undefined— 依赖声明
accordion
必填:否;声明来源:上游声明。
accordion 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)loading
必填:否;声明来源:上游声明。
loading 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)filterMethod
必填:否;声明来源:上游声明。
filterMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(query: string): void
renderAfterExpand
必填:否;声明来源:上游声明。
renderAfterExpand 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)nodeKey
必填:否;声明来源:上游声明。
checkStrictly
必填:否;声明来源:上游声明。
checkStrictly 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(源码表达式;ASAM 声明)expandOnClickNode
必填:否;声明来源:上游声明。
expandOnClickNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)checkOnClickNode
必填:否;声明来源:上游声明。
checkOnClickNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)checkOnClickLeaf
必填:否;声明来源:上游声明。
checkOnClickLeaf 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)checkDescendants
必填:否;声明来源:上游声明。
checkDescendants 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)autoExpandParent
必填:否;声明来源:上游声明。
autoExpandParent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)defaultCheckedKeys
必填:否;声明来源:上游声明。
defaultExpandedKeys
必填:否;声明来源:上游声明。
currentNodeKey
必填:否;声明来源:上游声明。
renderContent
必填:否;声明来源:上游声明。
renderContent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(h: Parameters<Extract<NonNullable<AsamTreeRenderContentFunction | undefined>, (...args: never[]) => unknown>>[0], context: AsamTreeRenderContentContext): VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }> | VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>[]
showCheckbox
必填:否;声明来源:上游声明。
showCheckbox 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
undefined(源码表达式;ASAM 声明)draggable
必填:否;声明来源:上游声明。
draggable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)allowDrag
必填:否;声明来源:上游声明。
allowDrag 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(node: Parameters<Extract<NonNullable<AsamTreeAllowDragFunction | undefined>, (...args: never[]) => unknown>>[0]): boolean
allowDrop
必填:否;声明来源:上游声明。
allowDrop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(draggingNode: Parameters<Extract<NonNullable<AsamTreeAllowDropFunction | undefined>, (...args: never[]) => unknown>>[0], dropNode: Parameters<Extract<NonNullable<AsamTreeAllowDropFunction | undefined>, (...args: never[]) => unknown>>[1], type: AsamTreeAllowDropType): boolean
highlightCurrent
必填:否;声明来源:上游声明。
highlightCurrent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)filterNodeMethod
必填:否;声明来源:上游声明。
filterNodeMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(value: any, data: AsamTreeNodeData, child: Parameters<Extract<NonNullable<AsamTreeFilterNodeMethodFunction | undefined>, (...args: never[]) => unknown>>[2]): boolean
emptyValues
必填:否;声明来源:上游声明。
valueOnClear
必填:否;声明来源:上游声明。
valueOnClear 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
valueOnClear.apply:(this: Function, thisArg: any, argArray?: any) => any— 依赖声明调用函数,以指定对象作为 this,并使用指定数组作为函数参数。
事件参数:
(this: Function, thisArg: any, argArray?: any): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.call:(this: Function, thisArg: any, ...argArray: any[]) => any— 依赖声明调用对象方法,并以另一个对象作为当前 this。
事件参数:
(this: Function, thisArg: any, ...argArray: any[]): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.bind:(this: Function, thisArg: any, ...argArray: any[]) => any— 依赖声明创建具有相同函数体的绑定函数,将 this 绑定到指定对象,并设置初始参数。
事件参数:
(this: Function, thisArg: any, ...argArray: any[]): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.toString:() => string— 依赖声明返回函数的字符串表示。
事件参数:
(): string嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.prototype:any— 依赖声明valueOnClear.length:number— 依赖声明valueOnClear.arguments:any— 依赖声明valueOnClear.caller:Function— 依赖声明嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.name:string— 依赖声明返回函数名称;函数名称只读,不能修改。
valueOnClear.__@hasInstance@8888:(value: any) => boolean— 依赖声明当函数用作构造函数时,判断指定值是否继承自该函数;构造函数可以覆盖此方法,控制 instanceof 对实例的识别。
事件参数:
(value: any): boolean嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
默认值与来源
undefined(已安装运行时;已安装组件)validateEvent
必填:否;声明来源:上游声明。
validateEvent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)automaticDropdown
必填:否;声明来源:上游声明。
automaticDropdown 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)clearIcon
必填:否;声明来源:上游声明。
clearIcon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectProps<V, I>)["clearIcon"]>, (...args: never[]) => unknown>>[1]): any
clearIcon.__isFragment:undefined— 依赖声明clearIcon.__isTeleport:undefined— 依赖声明clearIcon.__isSuspense:undefined— 依赖声明
默认值与来源
{"name":"CircleClose","__name":"circle-close"}(已安装运行时;已安装组件)autocomplete
必填:否;声明来源:上游声明。
默认值与来源
"off"(已安装运行时;已安装组件)allowCreate
必填:否;声明来源:上游声明。
allowCreate 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)remote
必填:否;声明来源:上游声明。
remote 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)debounce
必填:否;声明来源:上游声明。
默认值与来源
300(已安装运行时;已安装组件)loadingText
必填:否;声明来源:上游声明。
noMatchText
必填:否;声明来源:上游声明。
noDataText
必填:否;声明来源:上游声明。
remoteMethod
必填:否;声明来源:上游声明。
remoteMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(query: string): void
multipleLimit
必填:否;声明来源:上游声明。
默认值与来源
0(已安装运行时;已安装组件)defaultFirstOption
必填:否;声明来源:上游声明。
defaultFirstOption 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)reserveKeyword
必填:否;声明来源:上游声明。
reserveKeyword 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)valueKey
必填:否;声明来源:上游声明。
默认值与来源
"value"(已安装运行时;已安装组件)collapseTags
必填:否;声明来源:上游声明。
collapseTags 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)collapseTagsTooltip
必填:否;声明来源:上游声明。
collapseTagsTooltip 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)tagTooltip
必填:否;声明来源:上游声明。
tagTooltip 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
tagTooltip.appendTo:string | HTMLElement | undefined— 上游声明指示 Tooltip 的内容将附加在哪一个网页元素上
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)嵌套展开边界:大型实例类型;完整类型见公开类型视图。
tagTooltip.placement:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "placement">— 上游声明Tooltip 组件出现的位置
固定上游文档默认:
bottom(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"tagTooltip.fallbackPlacements:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "fallbackPlacements">— 上游声明提示浮层可采用的位置列表,参阅 Popper 的 fallbackPlacements。
固定上游文档默认:
['bottom', 'top', 'right', 'left'](2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.effect:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "effect">— 上游声明Tooltip 主题,内置了 dark / light 两种
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
"light"/"dark"tagTooltip.popperClass:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperClass">— 上游声明为 Tooltip 的 popper 添加自定义类名
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
falsetagTooltip.popperStyle:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperStyle">— 上游声明为 Tooltip 的 popper 添加自定义样式
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
tagTooltip.transition:string | undefined— 上游声明动画名称
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.teleported:boolean | undefined— 上游声明是否使用 teleport。设置成 true则会被追加到 append-to 的位置
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)枚举:
false/truetagTooltip.popperOptions:PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">— 上游声明Popper 配置参数。
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.popperOptions.placement:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">>, "placement">— 依赖声明枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"tagTooltip.popperOptions.modifiers:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">>, "modifiers">— 依赖声明tagTooltip.popperOptions.strategy:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">>, "strategy">— 依赖声明枚举:
"fixed"/"absolute"tagTooltip.popperOptions.onFirstUpdate:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">>, "onFirstUpdate">— 依赖声明事件参数:
(arg0: Parameters<Extract<NonNullable<PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectProps<V, I>)["tagTooltip"]>, "popperOptions">>, "onFirstUpdate">>, (...args: never[]) => unknown>>[0]): void
tagTooltip.showAfter:number | undefined— 上游声明在触发后多久显示内容,单位毫秒
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.hideAfter:number | undefined— 上游声明关闭时的延迟
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.autoClose:number | undefined— 上游声明tooltip 出现后自动隐藏延时,单位毫秒
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)tagTooltip.offset:number | undefined— 上游声明Tooltip 出现位置的偏移量
固定上游文档默认:
未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)maxCollapseTags
必填:否;声明来源:上游声明。
默认值与来源
1(已安装运行时;已安装组件)fitInputWidth
必填:否;声明来源:上游声明。
fitInputWidth 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)suffixIcon
必填:否;声明来源:上游声明。
suffixIcon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectProps<V, I>)["suffixIcon"]>, (...args: never[]) => unknown>>[1]): any
suffixIcon.__isFragment:undefined— 依赖声明suffixIcon.__isTeleport:undefined— 依赖声明suffixIcon.__isSuspense:undefined— 依赖声明
默认值与来源
{"name":"ArrowDown","__name":"arrow-down"}(已安装运行时;已安装组件)tagType
必填:否;声明来源:上游声明。
tagType 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"primary" / "success" / "danger" / "warning" / "info"
默认值与来源
"info"(已安装运行时;已安装组件)tagEffect
必填:否;声明来源:上游声明。
tagEffect 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"light" / "dark" / "plain"
默认值与来源
"light"(已安装运行时;已安装组件)remoteShowSuffix
必填:否;声明来源:上游声明。
remoteShowSuffix 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)load
必填:否;声明来源:ASAM 声明。
load 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(node: Parameters<Extract<NonNullable<AsamTreeSelectLoad<V, I> | undefined>, (...args: never[]) => unknown>>[0], resolve: (options: readonly AsamHierarchyOption<V, I>[]) => void, reject: () => void): void
事件参数:(rootNode: Parameters<Extract<NonNullable<AsamTreeLoadFunction | undefined>, (...args: never[]) => unknown>>[0], loadedCallback: (data: AsamTreeData) => void, stopLoading: () => void): void
cacheData
必填:否;声明来源:ASAM 声明。
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)data
必填:按分支;声明来源:上游声明。
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)AsamTreeSelectProps 公开类型视图
import type { Attrs, VNode, Component } from 'vue';
import type { AsamTreeSelectProps, AsamValue, AsamHierarchyOption, AsamHierarchyRuntimeProps, AsamControlSize, AsamTreeOptionProps, AsamTreeNodeData, AsamTreeKey, AsamTreeRenderContentFunction, AsamTreeRenderContentContext, AsamTreeAllowDragFunction, AsamTreeAllowDropFunction, AsamTreeAllowDropType, AsamTreeFilterNodeMethodFunction, AsamTreeSelectLoad, AsamTreeData, AsamTreeLoadFunction } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamTreeSelectProps
type PublicContract<V extends AsamValue = AsamValue, I extends object = object> = AsamTreeSelectProps<V, I>;
参数与事件说明
prefix
必填:否;声明来源:ASAM 声明。
prefix 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
loading
必填:否;声明来源:ASAM 声明。
loading 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
footer
必填:否;声明来源:ASAM 声明。
footer 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
header
必填:否;声明来源:ASAM 声明。
header 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
empty
必填:否;声明来源:ASAM 声明。
empty 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): unknown
label
必填:否;声明来源:ASAM 声明。
label 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(scope: Pick<any, "value" | "label"> & { index: number; }): unknown
tag
必填:否;声明来源:ASAM 声明。
tag 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(scope: { data: AsamTreeSelectTagOption[]; selectDisabled: boolean; deleteTag: (event: MouseEvent, option: AsamTreeSelectTagOption) => void; }): unknown
default
必填:否;声明来源:ASAM 声明。
default 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(scope: Pick<AsamTreeRenderContentContext, "data" | "store" | "node"> & {
/** Added by normalized modes; native retains the upstream scope. */
option?: AsamHierarchyOption; }): unknown
AsamTreeSelectSlots 公开类型视图
import type { AsamTreeSelectSlots, AsamHierarchySlots, AsamTreeSelectTagOption, AsamTreeRenderContentContext, AsamHierarchyOption } from '@asam-ui/ui';
// AsamTreeSelectSlots
type PublicContract = {
"prefix"?: (() => unknown) | undefined;
"loading"?: (() => unknown) | undefined;
"footer"?: (() => unknown) | undefined;
"header"?: (() => unknown) | undefined;
"empty"?: (() => unknown) | undefined;
"label"?: (AsamTreeSelectSlots)["label"];
"tag"?: ((scope: { data: AsamTreeSelectTagOption[]; selectDisabled: boolean; deleteTag: (event: MouseEvent, option: AsamTreeSelectTagOption) => void; }) => unknown) | undefined;
"default"?: ((scope: Pick<AsamTreeRenderContentContext, "node" | "data" | "store"> & {
/** Added by normalized modes; native retains the upstream scope. */
option?: AsamHierarchyOption; }) => unknown) | undefined;
};
参数与事件说明
clear
必填:是;声明来源:ASAM 声明。
focus
必填:是;声明来源:ASAM 声明。
current-change
必填:是;声明来源:ASAM 声明。
check-change
必填:是;声明来源:ASAM 声明。
node-click
必填:是;声明来源:ASAM 声明。
node-contextmenu
必填:是;声明来源:ASAM 声明。
node-collapse
必填:是;声明来源:ASAM 声明。
node-expand
必填:是;声明来源:ASAM 声明。
check
必填:是;声明来源:ASAM 声明。
node-drag-start
必填:是;声明来源:ASAM 声明。
node-drag-end
必填:是;声明来源:ASAM 声明。
node-drop
必填:是;声明来源:ASAM 声明。
node-drag-leave
必填:是;声明来源:ASAM 声明。
node-drag-enter
必填:是;声明来源:ASAM 声明。
node-drag-over
必填:是;声明来源:ASAM 声明。
blur
必填:是;声明来源:ASAM 声明。
visible-change
必填:是;声明来源:ASAM 声明。
remove-tag
必填:是;声明来源:ASAM 声明。
popup-scroll
必填:是;声明来源:ASAM 声明。
update:modelValue
必填:是;声明来源:ASAM 声明。
change
必填:是;声明来源:ASAM 声明。
end-reached
必填:是;声明来源:ASAM 声明。
AsamTreeSelectEmits 公开类型视图
import type { AsamTreeSelectEmits, AsamHierarchyEmits, AsamTreeCheckedInfo, AsamTreeNodeDropType, AsamValue, AsamHierarchyOption, AsamScrollbarDirection } from '@asam-ui/ui';
// AsamTreeSelectEmits
type PublicContract = {
"clear": (AsamTreeSelectEmits)["clear"];
"focus": [event: FocusEvent];
"current-change": (AsamTreeSelectEmits)["current-change"];
"check-change": [data: any, checked: boolean, indeterminate: boolean];
"node-click": (AsamTreeSelectEmits)["node-click"];
"node-contextmenu": (AsamTreeSelectEmits)["node-contextmenu"];
"node-collapse": (AsamTreeSelectEmits)["node-collapse"];
"node-expand": (AsamTreeSelectEmits)["node-expand"];
"check": [data: any, checkedInfo: AsamTreeCheckedInfo];
"node-drag-start": (AsamTreeSelectEmits)["node-drag-start"];
"node-drag-end": (AsamTreeSelectEmits)["node-drag-end"];
"node-drop": (AsamTreeSelectEmits)["node-drop"];
"node-drag-leave": (AsamTreeSelectEmits)["node-drag-leave"];
"node-drag-enter": (AsamTreeSelectEmits)["node-drag-enter"];
"node-drag-over": (AsamTreeSelectEmits)["node-drag-over"];
"blur": [event: FocusEvent];
"visible-change": [visible: boolean];
"remove-tag": [value: unknown];
"popup-scroll": [event: { scrollTop: number; scrollLeft: number; }];
"update:modelValue": (AsamTreeSelectEmits)["update:modelValue"];
"change": (AsamTreeSelectEmits)["change"];
"end-reached": [direction: AsamScrollbarDirection];
};
参数与事件说明
filter
必填:是;声明来源:上游声明。
filter 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(value: any): void
updateKeyChildren
必填:是;声明来源:上游声明。
updateKeyChildren 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(key: AsamTreeKey, data: AsamTreeData): void
getCheckedNodes
必填:是;声明来源:上游声明。
getCheckedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(leafOnly?: boolean | undefined, includeHalfChecked?: boolean | undefined): AsamTreeNodeData[]
getCheckedKeys
必填:是;声明来源:上游声明。
getCheckedKeys 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(leafOnly?: boolean | undefined): AsamTreeKey[]
getCurrentNode
必填:是;声明来源:上游声明。
getCurrentNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): AsamTreeNodeData | null
getCurrentKey
必填:是;声明来源:上游声明。
getCurrentKey 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): AsamTreeKey | null
setCheckedNodes
必填:是;声明来源:上游声明。
setCheckedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(nodes: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["setCheckedNodes"]>, (...args: never[]) => unknown>>[0], leafOnly?: boolean | undefined): void
setCheckedKeys
必填:是;声明来源:上游声明。
setCheckedKeys 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(keys: AsamTreeKey[], leafOnly?: boolean | undefined): void
setChecked
必填:是;声明来源:上游声明。
setChecked 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: AsamTreeNodeData | AsamTreeKey, checked: boolean, deep?: boolean | undefined): void
getHalfCheckedNodes
必填:是;声明来源:上游声明。
getHalfCheckedNodes 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): AsamTreeNodeData[]
getHalfCheckedKeys
必填:是;声明来源:上游声明。
getHalfCheckedKeys 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): AsamTreeKey[]
setCurrentNode
必填:是;声明来源:上游声明。
setCurrentNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(node: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["setCurrentNode"]>, (...args: never[]) => unknown>>[0], shouldAutoExpandParent?: boolean | undefined): void
setCurrentKey
必填:是;声明来源:上游声明。
setCurrentKey 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(key?: AsamTreeKey | null | undefined, shouldAutoExpandParent?: boolean | undefined): void
getNode
必填:是;声明来源:上游声明。
getNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: AsamTreeNodeData | AsamTreeKey): ReturnType<Extract<NonNullable<(AsamTreeSelectExpose)["getNode"]>, (...args: never[]) => unknown>>
remove
必填:是;声明来源:上游声明。
remove 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["remove"]>, (...args: never[]) => unknown>>[0]): void
append
必填:是;声明来源:上游声明。
append 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: AsamTreeNodeData, parentNode: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["append"]>, (...args: never[]) => unknown>>[1]): void
insertBefore
必填:是;声明来源:上游声明。
insertBefore 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: AsamTreeNodeData, refNode: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["insertBefore"]>, (...args: never[]) => unknown>>[1]): void
insertAfter
必填:是;声明来源:上游声明。
insertAfter 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(data: AsamTreeNodeData, refNode: Parameters<Extract<NonNullable<(AsamTreeSelectExpose)["insertAfter"]>, (...args: never[]) => unknown>>[1]): void
focus
必填:是;声明来源:上游声明。
focus 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
blur
必填:是;声明来源:上游声明。
blur 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
selectedLabel
必填:是;声明来源:上游声明。
treeRef
必填:是;声明来源:ASAM 声明。
selectRef
必填:是;声明来源:ASAM 声明。
AsamTreeSelectExpose 公开类型视图
import type { AsamTreeSelectExpose, AsamTreeFilterValue, AsamTreeKey, AsamTreeData, AsamTreeNodeData, AsamHierarchyRuntimeProps } from '@asam-ui/ui';
// AsamTreeSelectExpose
type PublicContract = {
"filter": (value: AsamTreeFilterValue) => void;
"updateKeyChildren": (key: AsamTreeKey, data: AsamTreeData) => void;
"getCheckedNodes": (leafOnly?: boolean, includeHalfChecked?: boolean) => AsamTreeNodeData[];
"getCheckedKeys": (leafOnly?: boolean) => AsamTreeKey[];
"getCurrentNode": () => AsamTreeNodeData | null;
"getCurrentKey": () => AsamTreeKey | null;
"setCheckedNodes": (AsamTreeSelectExpose)["setCheckedNodes"];
"setCheckedKeys": (keys: AsamTreeKey[], leafOnly?: boolean) => void;
"setChecked": (data: AsamTreeKey | AsamTreeNodeData, checked: boolean, deep?: boolean) => void;
"getHalfCheckedNodes": () => AsamTreeNodeData[];
"getHalfCheckedKeys": () => AsamTreeKey[];
"setCurrentNode": (AsamTreeSelectExpose)["setCurrentNode"];
"setCurrentKey": (key?: AsamTreeKey | null, shouldAutoExpandParent?: boolean) => void;
"getNode": (AsamTreeSelectExpose)["getNode"];
"remove": (AsamTreeSelectExpose)["remove"];
"append": (AsamTreeSelectExpose)["append"];
"insertBefore": (AsamTreeSelectExpose)["insertBefore"];
"insertAfter": (AsamTreeSelectExpose)["insertAfter"];
"focus": () => void;
"blur": () => void;
"selectedLabel": string | string[];
"treeRef": (AsamTreeSelectExpose)["treeRef"];
"selectRef": (AsamTreeSelectExpose)["selectRef"];
};
参数与事件说明
label
必填:是;声明来源:数据 / provider 协议。
value
必填:是;声明来源:数据 / provider 协议。
disabled
必填:否;声明来源:数据 / provider 协议。
disabled 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
raw
必填:是;声明来源:数据 / provider 协议。
children
必填:否;声明来源:数据 / provider 协议。
leaf
必填:否;声明来源:ASAM 声明。
leaf 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
isLeaf
必填:否;声明来源:ASAM 声明。
isLeaf 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
AsamHierarchyOption 公开类型视图
import type { AsamHierarchyOption, AsamValue, AsamOption } from '@asam-ui/ui';
// AsamHierarchyOption
type PublicContract<V extends AsamValue = AsamValue, I extends object = object> = {
readonly "label": string;
readonly "value": V;
readonly "disabled"?: boolean | undefined;
readonly "raw": I;
readonly "children"?: (readonly AsamOption<V, I>[] & readonly AsamHierarchyOption<V, I>[]) | undefined;
readonly "leaf"?: boolean | undefined;
readonly "isLeaf"?: boolean | undefined;
};
AsamTreeSelectLoad 公开类型视图
import type { AsamTreeSelectLoad, AsamValue, AsamHierarchyOption } from '@asam-ui/ui';
// AsamTreeSelectLoad
type PublicContract<V extends AsamValue = AsamValue, I extends object = object> = {
(node: Parameters<AsamTreeSelectLoad<V, I>>[0], resolve: (options: readonly AsamHierarchyOption<V, I>[]) => void, reject: () => void): void;
};
参数与事件说明
ariaLabel
必填:否;声明来源:上游声明。
id
必填:否;声明来源:上游声明。
effect
必填:否;声明来源:上游声明。
effect 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"light" / "dark"
popperClass
必填:否;声明来源:上游声明。
popperClass 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false
popperStyle
必填:否;声明来源:上游声明。
popperStyle 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
fallbackPlacements
必填:否;声明来源:上游声明。
offset
必填:否;声明来源:上游声明。
placement
必填:否;声明来源:上游声明。
placement 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"auto" / "auto-start" / "auto-end" / "top" / "bottom" / "right" / "left" / "top-start" / "top-end" / "bottom-start" / "bottom-end" / "right-start" / "right-end" / "left-start" / "left-end"
popperOptions
必填:否;声明来源:上游声明。
popperOptions 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
popperOptions.placement:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["popperOptions"]>, "placement">— 依赖声明枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"popperOptions.modifiers:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["popperOptions"]>, "modifiers">— 依赖声明popperOptions.strategy:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["popperOptions"]>, "strategy">— 依赖声明枚举:
"fixed"/"absolute"popperOptions.onFirstUpdate:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["popperOptions"]>, "onFirstUpdate">— 依赖声明事件参数:
(arg0: Parameters<Extract<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["popperOptions"]>, "onFirstUpdate">>, (...args: never[]) => unknown>>[0]): void
showArrow
必填:否;声明来源:上游声明。
showArrow 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
appendTo
必填:否;声明来源:上游声明。
appendTo 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
persistent
必填:否;声明来源:上游声明。
persistent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
teleported
必填:否;声明来源:上游声明。
teleported 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
disabled
必填:否;声明来源:上游声明。
disabled 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
tabindex
必填:否;声明来源:上游声明。
size
必填:否;声明来源:上游声明。
size 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"" / "large" / "default" / "small"
data
必填:否;声明来源:上游声明。
emptyText
必填:否;声明来源:上游声明。
defaultExpandAll
必填:否;声明来源:上游声明。
defaultExpandAll 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
indent
必填:否;声明来源:上游声明。
lazy
必填:否;声明来源:上游声明。
lazy 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
load
必填:否;声明来源:上游声明。
load 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(rootNode: Parameters<Extract<NonNullable<AsamTreeLoadFunction | undefined>, (...args: never[]) => unknown>>[0], loadedCallback: (data: AsamTreeData) => void, stopLoading: () => void): void
props
必填:否;声明来源:上游声明。
props 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
props.children:string | undefined— 上游声明props.label:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "label">— 上游声明事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "label">>, (...args: never[]) => unknown>>[1]): stringprops.disabled:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "disabled">— 上游声明事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "disabled">>, (...args: never[]) => unknown>>[1]): booleanprops.isLeaf:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "isLeaf">— 上游声明事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "isLeaf">>, (...args: never[]) => unknown>>[1]): booleanprops.class:PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "class">— 上游声明事件参数:
(data: AsamTreeNodeData, node: Parameters<Extract<NonNullable<PublicMember<NonNullable<AsamTreeOptionProps | undefined>, "class">>, (...args: never[]) => unknown>>[1]): string | { [key: string]: boolean; }
name
必填:否;声明来源:上游声明。
icon
必填:否;声明来源:上游声明。
icon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectNativeProps)["icon"]>, (...args: never[]) => unknown>>[1]): any
icon.__isFragment:undefined— 依赖声明icon.__isTeleport:undefined— 依赖声明icon.__isSuspense:undefined— 依赖声明
modelValue
必填:否;声明来源:上游声明。
modelValue 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
accordion
必填:否;声明来源:上游声明。
accordion 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
loading
必填:否;声明来源:上游声明。
loading 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
filterMethod
必填:否;声明来源:上游声明。
filterMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(query: string): void
renderAfterExpand
必填:否;声明来源:上游声明。
renderAfterExpand 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
nodeKey
必填:否;声明来源:上游声明。
checkStrictly
必填:否;声明来源:上游声明。
checkStrictly 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
expandOnClickNode
必填:否;声明来源:上游声明。
expandOnClickNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
checkOnClickNode
必填:否;声明来源:上游声明。
checkOnClickNode 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
checkOnClickLeaf
必填:否;声明来源:上游声明。
checkOnClickLeaf 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
checkDescendants
必填:否;声明来源:上游声明。
checkDescendants 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
autoExpandParent
必填:否;声明来源:上游声明。
autoExpandParent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
defaultCheckedKeys
必填:否;声明来源:上游声明。
defaultExpandedKeys
必填:否;声明来源:上游声明。
currentNodeKey
必填:否;声明来源:上游声明。
renderContent
必填:否;声明来源:上游声明。
renderContent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(h: Parameters<Extract<NonNullable<AsamTreeRenderContentFunction | undefined>, (...args: never[]) => unknown>>[0], context: AsamTreeRenderContentContext): VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }> | VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>[]
showCheckbox
必填:否;声明来源:上游声明。
showCheckbox 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
draggable
必填:否;声明来源:上游声明。
draggable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
allowDrag
必填:否;声明来源:上游声明。
allowDrag 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(node: Parameters<Extract<NonNullable<AsamTreeAllowDragFunction | undefined>, (...args: never[]) => unknown>>[0]): boolean
allowDrop
必填:否;声明来源:上游声明。
allowDrop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(draggingNode: Parameters<Extract<NonNullable<AsamTreeAllowDropFunction | undefined>, (...args: never[]) => unknown>>[0], dropNode: Parameters<Extract<NonNullable<AsamTreeAllowDropFunction | undefined>, (...args: never[]) => unknown>>[1], type: AsamTreeAllowDropType): boolean
highlightCurrent
必填:否;声明来源:上游声明。
highlightCurrent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
filterNodeMethod
必填:否;声明来源:上游声明。
filterNodeMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(value: any, data: AsamTreeNodeData, child: Parameters<Extract<NonNullable<AsamTreeFilterNodeMethodFunction | undefined>, (...args: never[]) => unknown>>[2]): boolean
options
必填:否;声明来源:上游声明。
multiple
必填:否;声明来源:上游声明。
multiple 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
emptyValues
必填:否;声明来源:上游声明。
valueOnClear
必填:否;声明来源:上游声明。
valueOnClear 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
valueOnClear.apply:(this: Function, thisArg: any, argArray?: any) => any— 依赖声明调用函数,以指定对象作为 this,并使用指定数组作为函数参数。
事件参数:
(this: Function, thisArg: any, argArray?: any): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.call:(this: Function, thisArg: any, ...argArray: any[]) => any— 依赖声明调用对象方法,并以另一个对象作为当前 this。
事件参数:
(this: Function, thisArg: any, ...argArray: any[]): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.bind:(this: Function, thisArg: any, ...argArray: any[]) => any— 依赖声明创建具有相同函数体的绑定函数,将 this 绑定到指定对象,并设置初始参数。
事件参数:
(this: Function, thisArg: any, ...argArray: any[]): any嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.toString:() => string— 依赖声明返回函数的字符串表示。
事件参数:
(): string嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.prototype:any— 依赖声明valueOnClear.length:number— 依赖声明valueOnClear.arguments:any— 依赖声明valueOnClear.caller:Function— 依赖声明嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
valueOnClear.name:string— 依赖声明返回函数名称;函数名称只读,不能修改。
valueOnClear.__@hasInstance@8888:(value: any) => boolean— 依赖声明当函数用作构造函数时,判断指定值是否继承自该函数;构造函数可以覆盖此方法,控制 instanceof 对实例的识别。
事件参数:
(value: any): boolean嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
validateEvent
必填:否;声明来源:上游声明。
validateEvent 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
clearable
必填:否;声明来源:上游声明。
clearable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
automaticDropdown
必填:否;声明来源:上游声明。
automaticDropdown 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
clearIcon
必填:否;声明来源:上游声明。
clearIcon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectNativeProps)["clearIcon"]>, (...args: never[]) => unknown>>[1]): any
clearIcon.__isFragment:undefined— 依赖声明clearIcon.__isTeleport:undefined— 依赖声明clearIcon.__isSuspense:undefined— 依赖声明
placeholder
必填:否;声明来源:上游声明。
autocomplete
必填:否;声明来源:上游声明。
filterable
必填:否;声明来源:上游声明。
filterable 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
allowCreate
必填:否;声明来源:上游声明。
allowCreate 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
remote
必填:否;声明来源:上游声明。
remote 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
debounce
必填:否;声明来源:上游声明。
loadingText
必填:否;声明来源:上游声明。
noMatchText
必填:否;声明来源:上游声明。
noDataText
必填:否;声明来源:上游声明。
remoteMethod
必填:否;声明来源:上游声明。
remoteMethod 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(query: string): void
multipleLimit
必填:否;声明来源:上游声明。
defaultFirstOption
必填:否;声明来源:上游声明。
defaultFirstOption 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
reserveKeyword
必填:否;声明来源:上游声明。
reserveKeyword 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
valueKey
必填:否;声明来源:上游声明。
collapseTags
必填:否;声明来源:上游声明。
collapseTags 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
collapseTagsTooltip
必填:否;声明来源:上游声明。
collapseTagsTooltip 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
tagTooltip
必填:否;声明来源:上游声明。
tagTooltip 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
tagTooltip.appendTo:string | HTMLElement | undefined— 上游声明嵌套展开边界:大型实例类型;完整类型见公开类型视图。
tagTooltip.placement:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "placement">— 上游声明枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"tagTooltip.fallbackPlacements:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "fallbackPlacements">— 上游声明tagTooltip.effect:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "effect">— 上游声明枚举:
"light"/"dark"tagTooltip.popperClass:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperClass">— 上游声明枚举:
falsetagTooltip.popperStyle:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperStyle">— 上游声明枚举:
false嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
tagTooltip.transition:string | undefined— 上游声明tagTooltip.teleported:boolean | undefined— 上游声明枚举:
false/truetagTooltip.popperOptions:PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">— 上游声明tagTooltip.popperOptions.placement:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">>, "placement">— 依赖声明枚举:
"auto"/"auto-start"/"auto-end"/"top"/"bottom"/"right"/"left"/"top-start"/"top-end"/"bottom-start"/"bottom-end"/"right-start"/"right-end"/"left-start"/"left-end"tagTooltip.popperOptions.modifiers:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">>, "modifiers">— 依赖声明tagTooltip.popperOptions.strategy:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">>, "strategy">— 依赖声明枚举:
"fixed"/"absolute"tagTooltip.popperOptions.onFirstUpdate:PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">>, "onFirstUpdate">— 依赖声明事件参数:
(arg0: Parameters<Extract<NonNullable<PublicMember<NonNullable<PublicMember<NonNullable<(AsamTreeSelectNativeProps)["tagTooltip"]>, "popperOptions">>, "onFirstUpdate">>, (...args: never[]) => unknown>>[0]): void
tagTooltip.showAfter:number | undefined— 上游声明tagTooltip.hideAfter:number | undefined— 上游声明tagTooltip.autoClose:number | undefined— 上游声明tagTooltip.offset:number | undefined— 上游声明
maxCollapseTags
必填:否;声明来源:上游声明。
fitInputWidth
必填:否;声明来源:上游声明。
fitInputWidth 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
suffixIcon
必填:否;声明来源:上游声明。
suffixIcon 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTreeSelectNativeProps)["suffixIcon"]>, (...args: never[]) => unknown>>[1]): any
suffixIcon.__isFragment:undefined— 依赖声明suffixIcon.__isTeleport:undefined— 依赖声明suffixIcon.__isSuspense:undefined— 依赖声明
tagType
必填:否;声明来源:上游声明。
tagType 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"primary" / "success" / "danger" / "warning" / "info"
tagEffect
必填:否;声明来源:上游声明。
tagEffect 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"light" / "dark" / "plain"
remoteShowSuffix
必填:否;声明来源:上游声明。
remoteShowSuffix 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
cacheData
必填:否;声明来源:上游声明。
AsamTreeSelectNativeProps 公开类型视图
import type { Attrs, VNode, Component } from 'vue';
import type { AsamTreeSelectNativeProps, AsamHierarchyRuntimeProps, AsamTreeData, AsamTreeLoadFunction, AsamTreeOptionProps, AsamTreeNodeData, AsamTreeKey, AsamTreeRenderContentFunction, AsamTreeRenderContentContext, AsamTreeAllowDragFunction, AsamTreeAllowDropFunction, AsamTreeAllowDropType, AsamTreeFilterNodeMethodFunction } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamTreeSelectNativeProps
type PublicContract = {
readonly "ariaLabel"?: string | undefined;
readonly "id"?: string | undefined;
"effect"?: (AsamTreeSelectNativeProps)["effect"];
"popperClass"?: (AsamTreeSelectNativeProps)["popperClass"];
"popperStyle"?: (AsamTreeSelectNativeProps)["popperStyle"];
"fallbackPlacements"?: (AsamTreeSelectNativeProps)["fallbackPlacements"];
"offset"?: number | undefined;
"placement"?: (AsamTreeSelectNativeProps)["placement"];
"popperOptions"?: (AsamTreeSelectNativeProps)["popperOptions"];
"showArrow"?: (AsamTreeSelectNativeProps)["showArrow"];
readonly "appendTo"?: (AsamTreeSelectNativeProps)["appendTo"];
"persistent"?: (AsamTreeSelectNativeProps)["persistent"];
"teleported"?: (AsamTreeSelectNativeProps)["teleported"];
"disabled"?: (AsamTreeSelectNativeProps)["disabled"];
"tabindex"?: (AsamTreeSelectNativeProps)["tabindex"];
readonly "size"?: (AsamTreeSelectNativeProps)["size"];
"data"?: AsamTreeData | undefined;
readonly "emptyText"?: string | undefined;
"defaultExpandAll"?: boolean | undefined;
"indent"?: number | undefined;
"lazy"?: boolean | undefined;
readonly "load"?: AsamTreeLoadFunction | undefined;
"props"?: AsamTreeOptionProps | undefined;
readonly "name"?: string | undefined;
readonly "icon"?: (AsamTreeSelectNativeProps)["icon"];
"modelValue"?: (AsamTreeSelectNativeProps)["modelValue"];
"accordion"?: boolean | undefined;
"loading"?: boolean | undefined;
readonly "filterMethod"?: ((query: string) => void) | undefined;
"renderAfterExpand"?: (AsamTreeSelectNativeProps)["renderAfterExpand"];
readonly "nodeKey"?: string | undefined;
"checkStrictly"?: boolean | undefined;
"expandOnClickNode"?: (AsamTreeSelectNativeProps)["expandOnClickNode"];
"checkOnClickNode"?: boolean | undefined;
"checkOnClickLeaf"?: (AsamTreeSelectNativeProps)["checkOnClickLeaf"];
"checkDescendants"?: boolean | undefined;
"autoExpandParent"?: (AsamTreeSelectNativeProps)["autoExpandParent"];
readonly "defaultCheckedKeys"?: AsamTreeKey[] | undefined;
readonly "defaultExpandedKeys"?: AsamTreeKey[] | undefined;
readonly "currentNodeKey"?: (AsamTreeSelectNativeProps)["currentNodeKey"];
readonly "renderContent"?: AsamTreeRenderContentFunction | undefined;
"showCheckbox"?: boolean | undefined;
"draggable"?: boolean | undefined;
readonly "allowDrag"?: AsamTreeAllowDragFunction | undefined;
readonly "allowDrop"?: AsamTreeAllowDropFunction | undefined;
"highlightCurrent"?: boolean | undefined;
readonly "filterNodeMethod"?: AsamTreeFilterNodeMethodFunction | undefined;
readonly "options"?: Record<string, any>[] | undefined;
"multiple"?: boolean | undefined;
readonly "emptyValues"?: unknown[] | undefined;
"valueOnClear"?: (AsamTreeSelectNativeProps)["valueOnClear"];
"validateEvent"?: (AsamTreeSelectNativeProps)["validateEvent"];
"clearable"?: boolean | undefined;
"automaticDropdown"?: boolean | undefined;
"clearIcon"?: (AsamTreeSelectNativeProps)["clearIcon"];
readonly "placeholder"?: string | undefined;
"autocomplete"?: string | undefined;
"filterable"?: boolean | undefined;
"allowCreate"?: boolean | undefined;
"remote"?: boolean | undefined;
"debounce"?: number | undefined;
readonly "loadingText"?: string | undefined;
readonly "noMatchText"?: string | undefined;
readonly "noDataText"?: string | undefined;
readonly "remoteMethod"?: ((query: string) => void) | undefined;
"multipleLimit"?: number | undefined;
"defaultFirstOption"?: boolean | undefined;
"reserveKeyword"?: (AsamTreeSelectNativeProps)["reserveKeyword"];
"valueKey"?: string | undefined;
"collapseTags"?: boolean | undefined;
"collapseTagsTooltip"?: boolean | undefined;
"tagTooltip"?: (AsamTreeSelectNativeProps)["tagTooltip"];
"maxCollapseTags"?: number | undefined;
"fitInputWidth"?: boolean | undefined;
"suffixIcon"?: (AsamTreeSelectNativeProps)["suffixIcon"];
"tagType"?: (AsamTreeSelectNativeProps)["tagType"];
"tagEffect"?: (AsamTreeSelectNativeProps)["tagEffect"];
"remoteShowSuffix"?: boolean | undefined;
"cacheData"?: unknown[] | undefined;
};
参数与事件说明
index
必填:是;声明来源:上游声明。
value
必填:是;声明来源:上游声明。
value 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
currentLabel
必填:是;声明来源:上游声明。
currentLabel 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
isDisabled
必填:否;声明来源:上游声明。
isDisabled 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
AsamTreeSelectTagOption 公开类型视图
import type { AsamTreeSelectTagOption, AsamHierarchyRuntimeProps } from '@asam-ui/ui';
// AsamTreeSelectTagOption
type PublicContract = {
"index": number;
"value": (AsamTreeSelectTagOption)["value"];
"currentLabel": string | number | boolean;
"isDisabled"?: boolean | undefined;
};