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

SurveyJS:如何基于动态矩阵布尔列控制另一矩阵行显示?

解决动态矩阵仅显示布尔列True行的问题

核心问题分析

你遇到的问题根源是:直接用visibleIf绑定布尔列时,默认会取整个列的首个值,而非当前行的独立布尔值。导致新增行后,判断逻辑混乱,显示错误数据。

具体解决方案

1. 给矩阵和列设置明确标识

给第一个动态矩阵设置唯一名称(比如sourceMatrix),布尔列的字段名设为isShow(自定义名称,只要好识别即可)。

2. 用行索引绑定每行的布尔判断

第二个矩阵的每行的visibleIf条件,要通过行索引定位到第一个矩阵对应行的布尔值。

  • 假设表单工具里的行索引变量是rowIndex(不同工具可能叫index,多数低代码/表单工具都有类似内置变量),那么条件写成:
    {sourceMatrix[rowIndex].isShow} === true
    
    这个逻辑的意思是:第二个矩阵的第N行,仅当第一个矩阵的第N行的isShow为true时才显示。

3. 同步两个矩阵的行数

第一个矩阵添加/删除行时,第二个矩阵必须同步行数,否则会出现行不匹配的情况。可以通过监听第一个矩阵的行变更事件,动态给第二个矩阵执行相同的添加/删除行操作:

  • 比如在表单的脚本事件里,监听sourceMatrix的rowAdded和rowRemoved事件,触发时给第二个矩阵(比如targetMatrix)同步增减行。

4. 绑定对应行的文本数据

第二个矩阵的每个文本列,要绑定到第一个矩阵对应行的同名字段。比如第二个矩阵的textCol1列,值设置为:

{sourceMatrix[rowIndex].textCol1}

这样就能确保显示的是第一个矩阵对应行的文本内容,不会出现数据串行的问题。

避坑提醒

  • 不要直接写{sourceMatrix.isShow},这种写法会默认取第一个矩阵布尔列的第一行值,导致所有行都用这个值判断,就是你遇到的“显示第一行数据”的问题。
  • 部分表单工具里,行索引从0开始,要注意索引的对应关系,避免出现行错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:25:04