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 | 与来源块的渲染程序相关联的常量。 |
CURSOR | 字符串 | 鼠标光标样式:将鼠标悬停在热点上,即可启动编辑器。 | |
DEFAULT_VALUE | T |null | 如需覆盖 **Field** 中设置的默认值,请直接更新原型。 示例: |
|
可修改 | 布尔值 | 可编辑字段通常会显示某种界面,表明它们是可修改的。序列化器也会保存它们。 | |
enabled_ | protected |
布尔值 | 是否可以使用编辑器在可编辑块上更改字段值? |
fieldGroup_ | protected |
SVGGElement |null | 渲染字段的 SVG 组元素。 |
isDirty_ | protected |
布尔值 | 是否需要重新呈现此块? |
maxDisplayLength | number | 添加省略号之前要显示的文字字符数上限。 | |
姓名? | 字符串 | (可选)字段名称。在每个块中是唯一的。静态标签通常未命名。 | |
NBSP |
|
(未声明) | 不间断空格。 |
可序列化 | 布尔值 | 可序列化字段由序列化器保存,不可序列化字段不是。可修改字段还应该可序列化。默认情况下,情况并非如此,因此 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 |
布尔值 | 该字段是可见的,还是因区块收起而隐藏的? |
方法
方法 | 修饰符 | 说明 |
---|---|---|
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 参数对象构造其 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() | 返回字段是否可进行 Tab 导航。 | |
isVisible() | 获取此可修改字段是否可见。 | |
loadLegacyState(callingClass, state) | 使用旧版 XML 钩子(如果应该使用)加载指定状态。返回 true 表示已处理加载,否则返回 false。 | |
onLocationChange(_) | 通知字段位置已更改。 | |
onMouseDown_(e) | protected |
处理字段上的 Pointdown 事件。 |
onShortcut(_shortcut) | 处理指定的键盘快捷键。 | |
positionBorderRect_() | protected |
更改大小后定位字段的边框矩形。 |
positionTextElement_(xOffset, contentWidth) | protected |
在大小发生更改后定位字段的文本元素。这会同时处理 LTR 和 RTL 定位。 |
render_() | protected |
供 getSize() 用于移动/调整任何 DOM 元素的大小,并获取新的大小。 所有会影响块大小/形状的渲染都应在此处完成,并应由 getSize() 触发。 |
repositionForWindowResize() | 用于在窗口大小调整期间重新定位 WidgetDiv 的开发者钩子。如果您的字段具有在窗口大小调整时需要自行调整位置的 WidgetDiv,您需要定义此钩子。例如,文本输入字段会定义此钩子,以便输入 WidgetDiv 能够在发生窗口大小调整事件时调整自身的位置。停用模态输入时,这一点尤为重要,因为 Android 设备会在打开软键盘时触发窗口大小调整事件。 如果您希望 WidgetDiv 自行隐藏而不是重新定位,则返回 false。这是默认行为。 DropdownDivs 已自行处理其定位逻辑,因此如果您的字段只有 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 |
根据文本更新字段大小。 |