如何将条件面板计数绑定到调查'paneldynamic'中的问题类型



在SurveyJs的调查中,我试图实现一个类型为"paneldynamic"的问题,该问题具有以下结构:

{
type: "paneldynamic",
name: "9.2",
visible: false,
visibleIf: "{9.a.n} > 0",
title: "When did you give birth?",
enableIf: "{9.a.n} > 0",
requiredIf: "{9.a.n} > 0",
templateTitle: "Date of birth:",
templateElements: [
{
type: "text",
name: "9.2.1",
inputType: "date",
maxValueExpression: "today()",
titleLocation: 'hidden'
},
],
panelCount: "{9.a.n}"
}

其中问题9a是一个数字条目。我希望这个问题的小组数量根据问题9a的答案而有所不同,但根据这个问题结构,调查似乎没有将9a的值与实际小组数量联系起来。

我在文档中找不到任何东西,并尝试了"bindings: { "panelCount": "9.a.n" }等变体,但似乎也不起作用。

如何正确设置variable panelCount属性?

您可能希望创建一个自定义函数,并根据另一个问题答案计算面板数量。例如:https://plnkr.co/edit/iYNMt7JRPOh2dTOy.

Survey.Serializer.addProperty("paneldynamic", {
name: "panelCountExpression:expression",
onExecuteExpression: (obj, res) => {       
if(res !== undefined) {
obj.panelCount = res;
}
}
});
var json = { 
"pages": [
{
"name": "page1",
"elements": [
{
"type": "text",
"name": "question1",
"inputType":"number",
"min": 0,
"max": 5,
"defaultValue":"2"
},
{
"type": "paneldynamic",
"name": "question2",
"panelCountExpression":"{question1}",
"templateElements": [
{
"type": "text",
"name": "question3"
}]
}
]
}
],
};

我还建议您审查以下内容:

  • Blogpost(示例取自它(:SurveyJS库——计算属性并用表达式和函数隐藏元素
  • 文档:条件逻辑和动态文本

感谢

最新更新