# Selector en árbol
Control de selección en árbol. Reutiliza la lógica de expansión / selección de LhTree: en la selección única, la primera pulsación sobre un nodo padre únicamente lo expande (se selecciona al pulsar de nuevo) y la pulsación sobre un nodo hoja lo selecciona directamente; en la selección múltiple se usan casillas de verificación. El panel se monta por defecto en body (Vue2 no dispone de Teleport).
Selector en árbol
<template>
<div class="demo-col" style="gap: 16px">
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhTreeSelect v-model="single" :data="data" placeholder="Selección única (pulsa un nodo padre para expandirlo, un nodo hoja para seleccionarlo)" />
<LhTreeSelect v-model="single" :data="data" disabled placeholder="Desactivado" />
<LhTreeSelect v-model="multi" :data="data" multiple placeholder="Selección múltiple (casillas de verificación)" />
</div>
<LhTreeSelect v-model="embedded" :data="data" :teleported="false" placeholder="teleported=false: panel integrado" />
<p class="demo-note">
Único: {{ single || '(sin selección)' }}; Múltiple: {{ multi.join(', ') || '(sin selección)' }}; Integrado: {{
embedded || '(sin selección)'
}}
</p>
</div>
</template>
<script>
export default {
data: () => ({
single: 'xishan',
multi: [],
embedded: '',
data: [
{
key: 'song',
label: 'Dinastía Song',
children: [
{ key: 'fan', label: 'Fan Kuan' },
{ key: 'xishan', label: 'Viaje por las montañas y los arroyos' },
],
},
{ key: 'yuan', label: 'Dinastía Yuan', children: [{ key: 'huang', label: 'Huang Gongwang' }] },
],
}),
}
</script>
# Props
| Prop | Descripción | Tipo | Predeterminado |
|---|---|---|---|
| data | Datos del árbol | LhTreeNode[] | [] |
| v-model | Valor actual; en la selección única es una cadena con la clave, y en la selección múltiple, un arreglo de claves marcadas | string \| string[] | — |
| multiple | Selección múltiple (muestra casillas de verificación; el valor es un arreglo de claves marcadas) | boolean | false |
| disabled | Desactivado | boolean | false |
| placeholder | Texto del marcador de posición | string | Paquete de idioma |
| teleported | Si el panel se monta en body | boolean | true |
| sx | Prop abreviada de maquetación | — | — |
# Events
input(v-model)、change (value)
# Accesibilidad
El disparador usa role="combobox" + aria-expanded, y el panel hereda la semántica role="tree" / role="treeitem" de LhTree;
en el modo de selección múltiple, las casillas llevan aria-checked y se admite la navegación completa mediante teclado.
Copyright © 2024-2026 FengMo WenXue