宜搭+
    正在准备搜索索引...

    虚拟组件类。

    本类表示一个已经生成值与选项、并绑定到目标字段的虚拟组件。通过调用 VirtualComponent.setDefaultValueVirtualComponent.setOptions 方法,可将值与选项注入到目标宜搭组件中, 实现组件的动态改造。此外,VirtualComponent.useMemo 方法可用于记忆 组件值并在后续变更时同步更新。

    虚拟组件实例通过 VirtualComponent.from 工厂方法创建,创建后会被 Object.freeze 冻结,字段不可再修改。

    层级 (查看层级一览)

    索引

    属性

    fieldId: string

    目标宜搭组件字段标识。

    options: { text: string; value: string }[]

    组件选项列表。

    preset: SchoolDaysPreset = {}

    时间语义化预设配置项。

    该配置项在实例化时传入,供 HijackedComponent.main 方法使用, 用于控制学年、学期、周次等时间相关组件的计算基准。

    26.7.1

    value: string

    组件默认值。

    方法

    • 将当前虚拟组件的值注入到目标组件中作为默认值。

      该方法会尝试通过 YidaPageContext.$ 获取目标组件,并调用其 setValue 方法注入当前值。若目标组件当前值为空(或为长度为零的数组), 才会执行注入;否则保留现有值。

      返回 VirtualComponent

      当前虚拟组件实例,支持链式调用。

      当目标组件不存在时抛出。

      26.7.1

    • 将当前虚拟组件的选项列表注入到目标组件中。

      根据目标字段标识的前缀,采用不同的注入策略:

      • 若字段以 text 开头,则为文本输入框创建一个 datalist 元素, 并将选项作为 option 子元素追加到该 datalist,同时设置输入框的 list 属性指向该 datalist
      • 若字段以 radiocheckboxselectmultiSelect 开头, 则调用目标组件的 set("dataSource", options) 方法注入数据源。

      返回 VirtualComponent

      当前虚拟组件实例,支持链式调用。

      当目标组件不存在或类型不支持时抛出。

      26.7.1

    • 使用 Utils.Memo 记忆并同步目标组件的值。

      该方法会为当前目标字段创建一个 Utils.Memo 实例。若记忆中不存在 对象,则将当前虚拟组件的值写入记忆;否则将记忆中的值回写到目标组件。 同时,方法会监听目标组件的 onChange 事件,在值发生变化时更新记忆对象, 并保留原有的 onChange 回调。

      返回 VirtualComponent

      当前虚拟组件实例,支持链式调用。

      26.7.1

    • 创建一个不可变的虚拟组件实例。

      该方法会调用私有构造函数创建实例,并通过 Object.freeze 冻结后返回。

      参数

      • value: string

        组件默认值。

      • options: { text: string; value: string }[]

        组件选项列表。

      • fieldId: string

        目标宜搭组件字段标识。

      返回 Readonly<VirtualComponent>

      被冻结的虚拟组件实例。

      26.7.1