只读field目标宜搭组件字段标识。
只读options组件选项列表。
时间语义化预设配置项。
该配置项在实例化时传入,供 HijackedComponent.main 方法使用, 用于控制学年、学期、周次等时间相关组件的计算基准。
只读value组件默认值。
将当前组件与另一个组件进行组合,生成新的虚拟组件。
组合逻辑如下:
例如,若当前组件值为 "2023-2024学年",另一组件值为 "第一学期",
则组合后的值为 "2023-2024学年第一学期"。
另一个劫持组件实例。
组合后的虚拟组件实例。
将当前劫持组件转换为虚拟组件,并绑定到指定的目标字段。
该方法会创建一个 Infection.VirtualComponent 实例,并将当前组件的 值、选项与目标字段标识注入其中。返回的虚拟组件可进一步调用 VirtualComponent.setDefaultValue 与 VirtualComponent.setOptions 完成实际改造。
目标宜搭组件的字段标识,例如 "selectField_xxx"。
绑定后的虚拟组件实例。
受保护main受保护组件主逻辑方法,需在子类中实现。
子类应在此方法中完成 HijackedComponent.value 与 HijackedComponent.options 的生成,并返回当前实例以支持链式调用。
当前组件实例。
将当前虚拟组件的值注入到目标组件中作为默认值。
该方法会尝试通过 YidaPageContext.$ 获取目标组件,并调用其
setValue 方法注入当前值。若目标组件当前值为空(或为长度为零的数组),
才会执行注入;否则保留现有值。
当前虚拟组件实例,支持链式调用。
将当前虚拟组件的选项列表注入到目标组件中。
根据目标字段标识的前缀,采用不同的注入策略:
text 开头,则为文本输入框创建一个 datalist 元素,
并将选项作为 option 子元素追加到该 datalist,同时设置输入框的
list 属性指向该 datalist。radio、checkbox、select 或 multiSelect 开头,
则调用目标组件的 set("dataSource", options) 方法注入数据源。当前虚拟组件实例,支持链式调用。
使用 Utils.Memo 记忆并同步目标组件的值。
该方法会为当前目标字段创建一个 Utils.Memo 实例。若记忆中不存在
对象,则将当前虚拟组件的值写入记忆;否则将记忆中的值回写到目标组件。
同时,方法会监听目标组件的 onChange 事件,在值发生变化时更新记忆对象,
并保留原有的 onChange 回调。
当前虚拟组件实例,支持链式调用。
静态from创建一个不可变的虚拟组件实例。
该方法会调用私有构造函数创建实例,并通过 Object.freeze 冻结后返回。
组件默认值。
组件选项列表。
目标宜搭组件字段标识。
被冻结的虚拟组件实例。
静态of创建并初始化一个劫持组件实例。
工厂方法会创建子类实例,并将传入的预设配置合并到 HijackedComponent.preset 中,然后自动调用 HijackedComponent.main 完成初始化。
具体的劫持组件子类类型。
可选的时间语义化预设配置项,将传入组件实例供其主逻辑使用。
已完成初始化的组件实例。
虚拟组件类。
本类表示一个已经生成值与选项、并绑定到目标字段的虚拟组件。通过调用 VirtualComponent.setDefaultValue 与 VirtualComponent.setOptions 方法,可将值与选项注入到目标宜搭组件中, 实现组件的动态改造。此外,VirtualComponent.useMemo 方法可用于记忆 组件值并在后续变更时同步更新。
虚拟组件实例通过 VirtualComponent.from 工厂方法创建,创建后会被
Object.freeze冻结,字段不可再修改。添加于
26.7.1
参阅