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

SurveyJS自定义属性:如何读取valueName设置初始值恢复下拉选中状态

解决Survey Builder自定义属性下拉框选中状态不恢复的问题

问题核心是你的自定义属性只实现了设置时同步到valueName,但没有实现从valueName反向同步回属性值,导致重新选中问题时,属性网格无法识别该选中哪个下拉选项。

只需要给domainAttributeProperty添加getValue方法,读取当前问题的valueName作为自定义属性的当前值即可:

import { SurveyModel } from 'survey-core';

let choicesOptions : string[] = [];

export function setDomainAttributeChoices(choices: string[] ){
    choicesOptions = choices;
}

export const domainAttributeProperty = {
    name: 'DomainAttributeProperty',
    category: 'general',
    choices: loadChoices,
    visibleIndex: 0,
    onSetValue: onSetValue,
    // 添加该方法,实现从valueName反向读取值
    getValue: function(survey: SurveyModel) {
        return survey.getPropertyValue('valueName');
    }
}

function loadChoices(obj: unknown, cb: Function) {
    cb(choicesOptions);
}

function onSetValue(survey: SurveyModel, value: string): void {
    survey.setPropertyValue('valueName', value);
}

关键说明:

  • getValue是SurveyJS自定义属性的核心方法,当属性网格加载选中元素的属性时,会调用该方法获取属性当前值
  • 直接返回valueName的值,就能让下拉框自动匹配对应选项并选中
  • 配合已有的onSetValue,实现自定义属性与valueName的双向同步

修改后,重新选中问题时,下拉框会自动选中与当前valueName匹配的选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:55:05