Retool输入框联动问题:选择地区后项目下拉无预期结果
Retool输入框联动:根据地区筛选项目选项
你的问题出在代码里用了find方法——这个方法只会返回第一个匹配条件的对象,而你需要的是所有匹配该地区的项目列表,且要提取所有项目名称组成数组,才能作为输入框的可选项。
修正后的代码
const projectDistrictPairs = [ { project: 'A', district: 'One' }, { project: 'B', district: 'One' }, { project: 'C', district: 'One' }, { project: 'D', district: 'Two' }, { project: 'E', district: 'Three' }, { project: 'F', district: 'Four' } ]; // 获取地区输入框的值,确认组件名称和Retool里的一致 const inputDistrict = Districtbox.value; // 筛选所有匹配地区的项目,再提取项目名称组成数组 const resultingProjects = projectDistrictPairs .filter(pair => pair.district === inputDistrict) .map(pair => pair.project); // 如果Retool输入框需要label/value格式的选项,用下面的写法: // const resultingProjects = projectDistrictPairs // .filter(pair => pair.district === inputDistrict) // .map(pair => ({ label: pair.project, value: pair.project })); console.log(resultingProjects); // 选One时输出 ['A', 'B', 'C']
Retool中配置步骤
- 选中项目输入框(比如命名为
Projectbox) - 在右侧属性面板的Options设置里,选择「Custom」选项
- 把修正后的代码粘贴到输入框中,返回的数组会自动作为输入框的可选项
- 确认地区输入框的组件名称确实是
Districtbox(Retool组件名区分大小写,写错会导致拿不到值)
额外注意点
- 确保
Districtbox的返回值类型和projectDistrictPairs里的district字段类型一致(比如都是字符串),如果是数字或其他类型,需要做类型转换 - 如果没有匹配的地区,
resultingProjects会返回空数组,输入框将无选项可选
内容的提问来源于stack exchange,提问作者hbk
相关产品推荐
相关产品推荐

