You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vanillatree.js:event.detail能否含多值?如何用name/label替代id?

Vanillatree.js 疑问解答

1. event.detail 对象是否可以包含多个值?

当然可以!Vanillatree.js 在触发 vtree-select 这类事件时,event.detail 其实是对应选中节点的完整数据对象——也就是说,你定义节点时包含的所有属性(比如 id、name、attribute1、parentId 这些),都能通过 evt.detail 访问到。它并不局限于只包含单个值,而是会把整个节点的信息都传递过来,方便你按需取用。

2. 如何用 name 或 label 替代 id 填充文本域?

你的代码思路完全没问题,只需要把原来访问 evt.detail.id 的地方,换成对应的 name 或者 label 属性就行。因为 evt.detail 是选中节点的完整对象,直接访问你定义的属性就可以了。

修改后的代码示例:

main.addEventListener('vtree-select', function(evt) {
  // 用 name 填充文本域
  randomtextArea.value = evt.detail.name + ' is selected';
  
  // 如果想用 label(如果你的节点定义了这个属性的话),就改成:
  // randomtextArea.value = evt.detail.label + ' is selected';
  
  // 保险起见,也可以加个 fallback,防止某些节点没有 name 属性:
  // randomtextArea.value = (evt.detail.name || evt.detail.id) + ' is selected';
});

简单来说,只要你的节点数据里有 name 字段,直接通过 evt.detail.name 获取就好,和你之前用 id 的方式完全一致~

内容的提问来源于stack exchange,提问作者chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:17:31