欄位類別
可編輯的欄位的抽象類別。
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 |
封鎖 | 空值 | 已附加至這個欄位。以 null 啟動,然後在 init 中設定。 |
textContent_ | protected |
文字 | 空值 | 轉譯欄位的文字內容元素。 |
textElement_ | protected |
SVGTextElement | 空值 | 轉譯後欄位的 SVG 文字元素。 |
validator_ | protected |
FieldValidator<T> | 空值 | 使用者編輯可編輯的欄位時,系統會呼叫的驗證函式。 |
value_ | protected |
T | 空值 | |
visible_ | protected |
boolean | 欄位會因為區塊收合而處於可見狀態,還是隱藏? |
方法
方法 | 修飾符 | 說明 |
---|---|---|
applyColour() | 更新欄位以符合區塊的顏色/樣式。 如果欄位的顏色取決於區塊的顏色,則非抽象的子類別可能建議實作此方法。當父項區塊或轉譯器變更時,系統會自動呼叫此方法。 詳情請參閱欄位說明文件,或查看 Field 下拉式選單。 |
|
bindEvents_() | protected |
將事件繫結至欄位。如果子類別需要自訂輸入處理,則可由子類別覆寫。 |
configure_(config) | protected |
處理傳遞至欄位的設定對應。 |
createBorderRect_() | protected |
建立欄位邊框矩形元素。不會由子類別覆寫。請改為修改 initView 中的函式結果,或建立個別函式進行呼叫。 |
createTextElement_() | protected |
建立欄位文字元素。不會由子類別覆寫。請改為修改 initView 中的函式結果,或建立個別函式進行呼叫。 |
doClassValidation_(newValue) | protected |
先驗證對欄位值所做的變更,再設定變更。如需子類別實作範例,請參閱 **FieldDropdown**。 **注意:** 驗證會傳回介於 |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue) | protected |
用於通知欄位輸入了無效的值。可由子類別覆寫,請參閱 FieldTextInput。預設為免人工管理。 |
doValueUpdate_(newValue) | protected |
用於更新欄位的值。子類別可以覆寫,以便自訂值儲存/更新外部項目。 |
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() | 取得可編輯的欄位的驗證函式,如未設定則傳回 null 。 | |
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) | 針對可編輯的欄位設定新的驗證函式,或清除先前設定的驗證工具。 驗證工具函式會使用新的欄位值,並傳回通過驗證的值。驗證的值可以是輸入值、輸入值的修改後版本,也可以是 null 取消變更。 如果函式不會傳回任何值 (或傳回未定義),就會視為有效值。這樣一來,即可將使用已驗證函式做為欄位層級變更事件通知的欄位使用。 |
|
setValue(newValue, fireChangeEvent) | 用於變更欄位值。處理驗證和事件。子類別應覆寫 doClassValidation_ 和 doValueUpdate_,而非這個方法。 | |
showEditor_(_e) | protected |
建立欄位編輯器的開發人員掛鉤。這是預設設定,必須覆寫才能建立編輯器。 |
updateEditable() | 新增或移除 UI,指出這個欄位是否可供編輯。 | |
updateSize_(margin) | protected |
根據文字更新欄位大小。 |