如何为SurveyJS问题添加自定义属性并在回答变更时读取其值
解决方案
你之前的问题是Serializer添加属性的目标类型错误——你给itemvalue(选项条目类型)加了属性,但实际displayAlert是定义在radiogroup这类问题(question)上的,所以需要把Serializer的目标类型改成对应的问题类型。
正确的Serializer配置
你需要针对问题类型(通用question或具体radiogroup)添加自定义属性:
// 方法1:给所有问题类型添加该属性 Serializer.addProperty('question', { name: 'displayAlert', type: 'boolean', category: 'general', defaultValue: false // 可选,设置默认值 }); // 方法2:仅给radiogroup类型添加该属性 // Serializer.addProperty('radiogroup', { // name: 'displayAlert', // type: 'boolean', // category: 'general', // defaultValue: false // });
验证事件中的读取逻辑
你的onValueChanging事件代码本身没问题,只要Serializer配置正确,就能正常读取属性:
this.userSurvey.onValueChanging.add((survey: any, change: any) => { console.log('alert?', change.question.displayAlert); });
确认JSON配置有效性
你的survey.json中displayAlert: true的配置无需修改,只要Serializer正确注册了该属性,SurveyJS会自动解析这个自定义属性并绑定到对应的question实例上。
内容的提问来源于stack exchange,提问作者dmance
相关产品推荐
相关产品推荐

