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

Blockly.FieldDropdown的menuGenerator参数类型技术咨询

Blockly.FieldDropdown的menuGenerator参数支持的类型详解

我来给你讲清楚Blockly.FieldDropdown里menuGenerator参数能接受的具体类型,结合官方注释和实际开发经验,它有两种合法的输入类型:

1. 二维数组类型

这是最常用的静态场景写法,要求是一个包含子数组的数组,每个子数组必须有两个元素:

  • 第一个元素:下拉菜单中展示给用户看的文本内容
  • 第二个元素:该选项对应的实际值(会被用于后续的验证逻辑或积木数据存储)

示例代码:

// 定义静态颜色选项
const colorOptions = [
  ["红色", "RED"],
  ["绿色", "GREEN"],
  ["蓝色", "BLUE"]
];
// 创建下拉字段
const colorDropdown = new Blockly.FieldDropdown(colorOptions);

2. 函数类型

如果你的下拉选项需要动态生成(比如根据外部数据、当前积木状态变化更新选项),就可以传递一个函数作为menuGenerator。这个函数需要满足一个要求:必须返回符合上述格式的二维数组。

Blockly会在每次渲染下拉菜单时调用这个函数,所以能保证每次打开菜单都拿到最新的选项列表。

示例代码:

// 动态生成尺寸选项的函数
function getSizeOptions() {
  // 模拟从外部数据源获取动态尺寸
  const currentSizes = ["小号", "中号", "大号", "加大号"];
  // 转换为Blockly要求的二维数组格式
  return currentSizes.map(size => [size, size.replace("号", "")]);
}
// 创建动态下拉字段
const sizeDropdown = new Blockly.FieldDropdown(getSizeOptions);

另外要注意,函数不需要额外传参,Blockly内部会处理调用逻辑,你只需要确保函数返回正确格式的数组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:21:40