封鎖 >欄位

欄位類別

可編輯欄位的抽象類別。

Signature:

export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable 

實作: IASTNodeLocationSvgIASTNodeLocationWithBlockIKeyboardAccessibleIRegistrableISerializable

建構函式

建構函式 修飾符 說明
(建構函式)(值, 驗證工具, 設定) 建構 Field 類別的新例項

屬性

屬性 修飾符 類型 說明
borderRect_ protected SVGRectElement |空值 顯示欄位的 SVG 邊框元素。
clickTarget_ protected 元素 |空值 點擊處理常式繫結的元素。
constants_ protected ConstantProvider |空值 與來源區塊轉譯器相關聯的常數。
遊標 字串 滑鼠遊標在啟動編輯器的互動區時,滑鼠遊標會指向樣式。
DEFAULT_VALUE T |空值

如要覆寫在「Field」中設定的預設值,請直接更新原型。

範例:FieldImage.prototype.DEFAULT_VALUE = null;

可編輯 布林值 可編輯的欄位通常會顯示某種使用者介面,指出這些欄位可以編輯。序列化程式也會儲存這些內容。
enabled_ protected 布林值 可以在可編輯區塊中使用編輯器變更欄位值嗎?
fieldGroup_ protected SVGGElement |空值 顯示欄位的 SVG 群組元素。
isDirty_ protected 布林值 是否需要重新轉譯這個區塊?
maxDisplayLength 數字 加上刪節號前顯示的文字長度上限。
名稱? 字串 (選填) 欄位名稱。每個區塊中皆不得重複。靜態標籤通常不會命名。
NBSP

static

readonly

(未宣告) 不分行的空格。
可扣款 布林值 可序列化欄位由序列化程式儲存,不可序列化的欄位則不會。可編輯的欄位也應可序列化。此設定並非預設,因此 SERIALIZABLE 可以回溯相容。
size_ protected 尺寸
SKIP_SETUP

static

readonly

專屬符號 這是用來表示欄位建構函式「不得」「不要」設定欄位值或執行 setup_」的值,並允許子類別改為執行該動作。
sourceBlock_ protected 封鎖 |空值 封鎖這個欄位。以 null 啟動,然後在 init 中設定。
textContent_ protected 文字 |空值 顯示欄位中的文字內容元素。
textElement_ protected SVGTextElement |空值 顯示欄位的 SVG 文字元素。
validator_ protected FieldValidator&lt;T&gt;|空值 使用者編輯可編輯的欄位時,會呼叫驗證函式。
value_ protected T |空值
visible_ protected 布林值 欄位是否因區塊收合而可見或隱藏?

方法

方法 修飾符 說明
applyColour()

更新欄位以符合區塊的顏色/樣式。

如果欄位顏色視區塊顏色而定,非抽象子類別類別可能會想要實作此方法。系統會在適當時機自動呼叫這個方法,例如上層區塊或轉譯器變更時。

詳情請參閱欄位說明文件,或使用 FieldDrop 取得範例。

bindEvents_() protected 將事件繫結至欄位。如果子類別需要執行自訂輸入處理,則可透過子類別覆寫。
configure_(config) protected 處理傳遞至欄位的設定對應。
createBorderRect_() protected 建立欄位邊框矩形元素。不會遭到子類別覆寫。請改為修改 initView 中的函式結果,或建立另外的函式呼叫。
createTextElement_() protected 建立欄位文字元素。不會遭到子類別覆寫。請改為修改 initView 中的函式結果,或建立另外的函式呼叫。
doClassValidation_(newValue) protected

請在設定欄位值之前,先驗證變更內容。如需子類別實作的範例,請參閱「欄位下拉式選單」。

**注意:** 驗證會傳回 Tnullundefined 之間的一個選項。**Field** 的實作一律不會傳回 undefined,但如果新值與 T 相容,子類別可以傳回 undefined

doClassValidation_(newValue) protected
doValueInvalid_(_無效值, _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)

為可編輯的欄位設定新的驗證函式,或清除先前設定的驗證工具。

驗證工具使用新欄位值,並傳回已驗證的值。驗證的值可以是輸入值、輸入值的修改版本,或是 null 來取消變更。

如果函式未傳回任何值 (或傳回未定義),則會接受新值。如果欄位使用已驗證的函式做為欄位層級變更事件通知,即可使用這類通知。

setValue(newValue, fireChangeEvent) 用來變更欄位的值。處理驗證和事件。子類別應覆寫 doClassValidation_ 和 doValueUpdate_,而不是這個方法。
showEditor_(_e) protected 開發人員掛鉤,用於建立欄位編輯器。根據預設,此為免人工管理。如要建立編輯器,您必須加以覆寫。
updateEditable() 新增或移除 UI,指定這個欄位是否可編輯的。
updateSize_(margin) protected 根據文字更新欄位大小。