Field 类
可编辑字段的抽象类。
Signature:
export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable
实现:IASTNodeLocationSvg、IASTNodeLocationWithBlock、IKeyboardAccessible、IRegistrable、ISerializable
构造函数
构造函数 | 修饰符 | 说明 |
---|---|---|
(构造函数)(值, 验证器, 配置) | 构造 Field 类的新实例 |
属性
属性 | 修饰符 | 类型 | 说明 |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | 所渲染字段的 SVG 边框元素。 |
clickTarget_ | protected |
元素 | null | 点击处理程序绑定到的元素。 |
constants_ | protected |
ConstantProvider | null | 与来源块的渲染程序相关联的常量。 |
游标 | string | 悬停在启动编辑器的热点上时显示鼠标光标样式。 | |
DEFAULT_VALUE | T | null | 如需覆盖在 **Field** 中设置的默认值,请直接更新原型。 示例: |
|
可修改 | boolean | 可修改的字段通常会显示某种界面,表明这些字段是可修改的。序列化器也会保存这些对象。 | |
enabled_ | protected |
boolean | 能否使用编辑器在可编辑块上更改字段值? |
fieldGroup_ | protected |
SVGGElement | null | 所渲染字段的 SVG 组元素。 |
isDirty_ | protected |
boolean | 是否需要重新渲染此块? |
maxDisplayLength | number | 添加省略号前可显示的文字字符数上限。 | |
姓名? | string | (可选)字段名称。在每个块中是唯一的。静态标签通常未命名。 | |
NBSP |
|
(未声明) | 不间断空格。 |
可序列化 | boolean | 可序列化字段由序列化器保存,不可序列化字段则不保存。可修改的字段也应可序列化。默认情况下,情况并非如此,因此 SERIALIZABLE 具有向后兼容性。 | |
size_ | protected |
尺寸 | |
SKIP_SETUP |
|
唯一符号 | 一个值,用于指示字段的构造函数何时 *不应* 设置字段的值或运行 configure_,并且应允许子类执行此操作。 |
sourceBlock_ | protected |
屏蔽设置 | null | 禁止此字段是附加的。最初为 null,然后在 init 中设置。 |
textContent_ | protected |
文本 | null | 所渲染字段的文本内容元素。 |
textElement_ | protected |
SVGTextElement | null | 所渲染字段的 SVG 文本元素。 |
validator_ | protected |
FieldValidator<T> | null | 当用户修改可编辑字段时调用的验证函数。 |
value_ | protected |
T | null | |
visible_ | protected |
boolean | 该字段是可见还是因块已收起而隐藏? |
方法
方法 | 修饰符 | 说明 |
---|---|---|
applyColour() | 更新字段以匹配块的颜色/样式。 如果字段的颜色取决于块的颜色,非抽象子类可能希望实现此行为。系统会自动在相关时间(例如父级代码块或渲染器发生变化时)调用它。 如需了解详情,请参阅字段文档;如需查看示例,请参阅 FieldDropdown。 |
|
bindEvents_() | protected |
将事件绑定到该字段。如果子类需要自定义输入处理,可以将其替换。 |
configure_(config) | protected |
处理传递给该字段的配置映射。 |
createBorderRect_() | protected |
创建一个字段边框矩形元素。不被子类替换。而应修改 initView 内函数的结果,或创建要调用的单独函数。 |
createTextElement_() | protected |
创建字段文本元素。不被子类替换。而应修改 initView 内函数的结果,或创建要调用的单独函数。 |
doClassValidation_(newValue) | protected |
在设置对字段的值所做的更改之前,先进行验证。如需查看子类实现的示例,请参阅 **FieldDropdown**。 **注意:** 验证会返回 |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
用于通知该字段输入的值无效。可被子类替换,请参阅 FieldTextInput。默认情况下不执行任何操作。 |
doValueUpdate_(newValue) | protected |
用于更新字段的值。可由子类替换,以自定义值存储/更新外部内容。 |
fromJson(_options) | static |
子类应重新实现此方法,以根据 JSON arg 对象构建其 Field 子类。 如果字段子类未替换此方法,则尝试在 FieldRegistry 中注册该子类会出错。 |
getAbsoluteXY_() | protected |
返回此字段左上角的绝对坐标。原点 (0,0) 是网页正文的左上角。 |
getBorderRect() | protected |
获取矩形边框元素。 |
getClickTarget_() | protected |
点击处理程序将绑定到的元素。如果未明确设置,则默认为字段的 SVG 根。在可编辑字段中点击该元素时,系统会打开编辑器。 |
getConstants() | 获取渲染程序常量提供程序。 | |
getDisplayText_() | protected |
获取此字段中要显示在代码块上的文本。由于省略号和其他格式设置,可能与 getText 不同。 |
getFlipRtl() | 返回我们是否应在 RTL 中翻转字段。 | |
getSize() | 返回字段的高度和宽度。 *通常*,这应该是调用 render_ 的唯一位置。 |
|
getSourceBlock() | 获取此字段附加到的块。 | |
getSvgRoot() | 获取此可编辑字段的组元素。用于测量尺寸和定位。 | |
getText_() | protected |
用于覆盖此字段返回文本的开发者钩子。如果此字段值的文本表示形式不仅仅是该值的字符串类型,则覆盖。返回 null 可执行字符串类型转换。 |
getText() | 从此字段获取文本。替换 getText_ 以提供与简单地将值转换为字符串不同的行为。 | |
getTextContent() | protected |
获取文本内容。 |
getTextElement() | protected |
获取文本元素。 |
getTooltip() | 返回此字段的提示文本。 | |
getValidator() | 获取可修改字段的验证函数;如果未设置,则为 null。 | |
getValue() | 获取字段的当前值。 | |
initModel() | 将字段模型安装到块上后,对其进行初始化。默认情况下不执行任何操作。 | |
initView() | protected |
为此字段创建屏蔽界面。 |
isClickable() | 检查此字段是否定义了 showEditor_ 函数。 | |
isClickableInFlyout(autoClosingFlyout) | 检查在区块处于弹出状态时,相应字段是否可点击。默认情况下,字段在始终打开的弹出框(例如简单的工具箱)中是可点击的,但在自动关闭的弹出框(例如类别工具箱)中是可点击的。子类可以替换此函数来改变这种行为。请注意,isClickable 也必须返回 true 才能发挥作用。 |
|
isCurrentlyEditable() | 检查此字段当前是否可修改。有些字段永远不可修改(例如文本标签)。其他字段也可以修改,但可能存在于不可修改的块中或当前处于停用状态。 | |
isEnabled() | 检查当来源块可修改时,是否可以使用编辑器更改此字段的值。 | |
isFullBlockField() | protected |
定义此字段是否应占据整个代码块。 替换此函数时请谨慎。它可能无法正常运行,或无法按预期运行,因为该行为有点被黑客入侵。如果您正在考虑覆盖此功能,请在论坛上发布与您的预期行为相符的帖子,看看是否有其他方法。 |
isSerializable() | 检查此字段是否应由 XML 渲染程序序列化。处理向后兼容性和不协调状态的逻辑。 | |
isTabNavigable() | 返回字段是否可通过标签页导航。 | |
isVisible() | 获取此可修改字段是否可见。 | |
loadLegacyState(callingClass, state) | 使用旧的 XML 钩子(如果应使用)加载指定的状态。返回 true 表示已处理加载,否则返回 false。 | |
onLocationChange(_) | 通知字段其营业地点已更改。 | |
onMouseDown_(e) | protected |
处理字段上的指针按下事件。 |
onShortcut(_shortcut) | 处理指定的键盘快捷键。 | |
positionBorderRect_() | protected |
设置字段大小更改后的边框矩形。 |
positionTextElement_(xOffset, contentWidth) | protected |
在大小发生变化后确定字段的文本元素位置。这会同时处理 LTR 和 RTL 定位。 |
render_() | protected |
getSize() 用于移动/调整任何 DOM 元素的大小,以及获取新的大小。 影响块大小/形状的所有渲染都应在此处完成,并应由 getSize() 触发。 |
repositionForWindowResize() | 一个开发者钩子,用于在窗口大小调整期间调整 WidgetDiv 的位置。如果您的字段具有在调整窗口大小时需要重新定位的 WidgetDiv,则需要定义此钩子。例如,文本输入字段定义了此钩子,以便输入 WidgetDiv 可以在窗口大小调整事件发生时自行调整位置。停用模态输入时,这一点尤为重要,因为 Android 设备会在软键盘打开时触发窗口大小调整事件。 如果您希望 WidgetDiv 隐藏自身而不是重新定位,则返回 false。这是默认行为。 DropdownDiv 已处理自己的定位逻辑,因此如果您的字段只包含 DropdownDiv,则无需替换此函数。 |
|
saveLegacyState(callingClass) | protected |
如果应使用 XML 状态,则返回字符串化版本。否则,将返回 null,以指示该字段应使用自己的序列化。 |
setEnabled(enabled) | 设置当来源块可修改时,是否可以使用编辑器更改此字段的值。 | |
setSourceBlock(block) | 将此字段附加到数据块。 | |
setTooltip(newTip) | 设置此字段的提示。 | |
setValidator(handler) | 为可修改字段设置新的验证函数,或清除之前设置的验证程序。 验证器函数会接受新的字段值,并返回经过验证的值。经过验证的值可以是输入值、输入值的修改版本,也可以是用于取消更改的 null。 如果函数未返回任何值(或返回未定义的值),则将新值视为有效值。这是为了支持将经过验证的函数用作字段级更改事件通知的字段。 |
|
setValue(newValue, fireChangeEvent) | 用于更改字段的值。处理验证和事件。子类应替换 doClassValidation_ 和 doValueUpdate_,而不是此方法。 | |
showEditor_(_e) | protected |
用于为字段创建编辑器的开发者钩子。默认情况下,此项为空操作;必须覆盖此项才能创建编辑器。 |
updateEditable() | 添加或移除用于指示此字段是否可修改的界面。 | |
updateSize_(margin) | protected |
根据文本更新字段大小。 |