欄位類別
可編輯欄位的抽象類別。
Signature:
export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable
實作: IASTNodeLocationSvg、IASTNodeLocationWithBlock、IKeyboardAccessible、IRegistrable、ISerializable
建構函式
建構函式 | 修飾符 | 說明 |
---|---|---|
(建構函式)(值, 驗證工具, 設定) | 建構 Field 類別的新例項 |
屬性
屬性 | 修飾符 | 類型 | 說明 |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | 空值 | 算繪欄位的 SVG 框線元素。 |
clickTarget_ | protected |
元素 | 空值 | 點擊處理常式將繫結的元素。 |
constants_ | protected |
ConstantProvider | 空值 | 與來源區塊轉譯器相關聯的常數。 |
方塊 | 字串 | 啟動編輯器的滑鼠遊標樣式。 | |
DEFAULT_VALUE | T | 空值 | 如要覆寫 **Field** 中設定的預設值,請直接更新原型。 範例: |
|
可編輯 | boolean | 可編輯的欄位通常會顯示某種 UI,指出這些欄位可以編輯。序列化也會儲存這些檔案。 | |
enabled_ | protected |
boolean | 我可以使用編輯區塊的編輯器變更欄位值嗎? |
fieldGroup_ | protected |
SVGGElement | 空值 | 算繪欄位的 SVG 群組元素。 |
isDirty_ | protected |
boolean | 這個區塊需要重新轉譯嗎? |
maxDisplayLength | 號碼 | 新增刪節號前顯示的文字長度上限。 | |
名稱? | 字串 | (選填) 欄位名稱。在每個區塊中不重複。靜態標籤通常沒有名稱。 | |
NBSP |
|
(未聲明) | 不分行空格。 |
可轉儲 | boolean | 序列化欄位是由序列化程式儲存,不可序列化的欄位則不會。可編輯的欄位也應可序列化。這並非預設情況,因此 SERIALIZABLE 具有回溯相容性。 | |
size_ | protected |
尺寸 | |
SKIP_SETUP |
|
唯一符號 | 該值可用於表示欄位建構函式何時「不應」設定欄位值或執行 setup_,應讓子類別改為執行此動作。 |
sourceBlock_ | protected |
封鎖 | 空值 | 封鎖這個欄位已附加的欄位。啟動為空值,然後在 init 設定。 |
textContent_ | protected |
文字 | 空值 | 轉譯欄位的文字內容元素。 |
textElement_ | protected |
SVGTextElement | 空值 | 算繪欄位的 SVG 文字元素。 |
validator_ | protected |
FieldValidator<T> | 空值 | 使用者編輯可編輯欄位時呼叫驗證函式。 |
value_ | protected |
T | 空值 | |
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 引數物件建構其 Field 子類別。 如果該子類別尚未覆寫該子類別,嘗試在 FieldRegistry 中註冊欄位子類別就會發生錯誤。 |
getAbsoluteXY_() | protected |
傳回這個欄位左上角的絕對座標。起點 (0,0) 是指頁面內文的左上角。 |
getBorderRect() | protected |
取得邊框矩形元素。 |
getClickTarget_() | protected |
將點擊處理常式繫結至的元素。如未明確設定,則會預設為欄位的 SVG 根。點選這個可編輯欄位時,編輯器就會開啟。 |
getConstants() | 取得轉譯器常數供應器。 | |
getDisplayText_() | protected |
取得這個欄位中的文字,以便顯示在區塊中。可能會因為刪節號和其他格式而與 getText 不同。 |
getFlipRtl() | 傳回是否應在 RTL 中翻轉欄位。 | |
getSize() | 傳回欄位的高度和寬度。 這「一般」應該是唯一從算繪__的地方。 |
|
getSourceBlock() | 取得附加於這個欄位的區塊。 | |
getSvgRoot() | 取得這個可編輯欄位的群組元素。用於測量大小和位置。 | |
getText_() | protected |
開發人員掛鉤以覆寫這個欄位的傳回文字。如果這個欄位值的文字表示法並非只是其值的字串層級轉換,則覆寫此欄位。將空值傳回至一般類型,以指定字串類型。 |
getText() | 取得這個欄位中的文字。覆寫 getText_ 以提供與將值轉換為字串不同的行為。 | |
getTextContent() | protected |
取得文字內容。 |
getTextElement() | protected |
取得文字元素。 |
getTooltip() | 傳回這個欄位的工具提示文字。 | |
getValidator() | 取得可編輯欄位的驗證函式;如未設定,則為空值。 | |
getValue() | 取得欄位目前的值。 | |
initModel() | 在區塊中安裝欄位後,初始化欄位模型。預設為免人工管理。 | |
initView() | protected |
為這個欄位建立區塊 UI。 |
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。此為預設行為。 DropdownDivs 已自行處理定位邏輯,因此如果您的欄位只有 DropdownDiv,就不必覆寫這個函式。 |
|
saveLegacyState(callingClass) | protected |
傳回 XML 狀態的字串化版本 (如果應使用)。否則,系統會傳回空值,以表示欄位應使用自己的序列化。 |
setEnabled(enabled) | 在來源區塊可編輯時,設定能否使用編輯器變更這個欄位的值。 | |
setSourceBlock(block) | 將這個欄位附加到區塊。 | |
setTooltip(newTip) | 設定這個欄位的工具提示。 | |
setValidator(handler) | 為可編輯的欄位設定新驗證函式,或清除先前設定的驗證工具。 驗證函式會採用新的欄位值,並傳回已驗證的值。已驗證的值可以是輸入值、修改後的輸入值,或用來取消變更的空值。 如果函式未傳回任何內容 (或傳回未定義),新值會接受新值。這樣一來,您就能使用經過驗證的函式做為欄位層級變更事件通知的欄位。 |
|
setValue(newValue, fireChangeEvent) | 用於變更欄位值。處理驗證和事件。子類別應覆寫 doClassValidation_ 和 doValueUpdate_,而非此方法。 | |
showEditor_(_e) | protected |
開發人員掛鉤,為欄位建立編輯器。此為免人工管理的預設項目,必須覆寫這個值才能建立編輯器。 |
updateEditable() | 新增或移除使用者介面,指出這個欄位是否可供編輯。 | |
updateSize_(margin) | protected |
根據文字更新欄位的大小。 |