คลาสฟิลด์
คลาสนามธรรมสําหรับช่องที่แก้ไขได้
ลายเซ็น:
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
ใช้: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
ผู้ผลิต
ผู้ผลิต | คีย์ตัวปรับแต่ง | คำอธิบาย |
---|---|---|
(constructor)(value, validator, config) | สร้างอินสแตนซ์ใหม่ของคลาส Field |
พร็อพเพอร์ตี้
พร็อพเพอร์ตี้ | คีย์ตัวปรับแต่ง | ประเภท | คำอธิบาย |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | องค์ประกอบเส้นขอบ SVG ของช่องที่แสดงผล |
clickTarget_ | protected |
องค์ประกอบ | null | องค์ประกอบที่ตัวจัดการการคลิกเชื่อมโยงอยู่ |
constants_ | protected |
ConstantProvider | null | ค่าคงที่ที่เชื่อมโยงกับโปรแกรมแสดงผลของบล็อกแหล่งที่มา |
DEFAULT_VALUE | T | null | หากต้องการเขียนทับค่าเริ่มต้นที่ตั้งค่าไว้ใน **ช่อง** ให้อัปเดตโปรโตไทป์โดยตรง ตัวอย่าง: |
|
แก้ไขได้ | บูลีน | โดยทั่วไปแล้วช่องที่แก้ไขได้จะแสดง UI บางประเภทที่ระบุว่าแก้ไขได้ นอกจากนี้ เครื่องมือจัดรูปแบบข้อมูลจะบันทึกรายการเหล่านั้นด้วย | |
enabled_ | protected |
บูลีน | เปลี่ยนค่าในช่องได้ไหมโดยใช้เครื่องมือแก้ไขในบล็อกที่แก้ไขได้ |
fieldGroup_ | protected |
SVGGElement | null | องค์ประกอบกลุ่ม SVG ของช่องที่แสดงผล |
isDirty_ | protected |
บูลีน | จำเป็นต้องแสดงผลบล็อกนี้อีกครั้งไหม |
maxDisplayLength | ตัวเลข | จำนวนอักขระสูงสุดของข้อความที่จะแสดงก่อนเพิ่มเครื่องหมายจุดไข่ปลา | |
name? | สตริง | (ไม่บังคับ) ชื่อฟิลด์ ไม่ซ้ำกันภายในแต่ละบล็อก โดยปกติแล้วป้ายกำกับแบบคงจะไม่มีชื่อ | |
NBSP |
|
(not declared) | ช่องว่างไม่แยก |
SERIALIZABLE | บูลีน | ฟิลด์ที่ serialize ได้จะได้รับการบันทึกโดยโปรแกรมจัดรูปแบบข้อความ ส่วนฟิลด์ที่ไม่สามารถ serialize ได้จะไม่ได้รับการบันทึก ฟิลด์ที่แก้ไขได้ควรเป็นฟิลด์ที่อนุกรมข้อมูลได้ ซึ่งไม่ใช่กรณีนี้โดยค่าเริ่มต้นเพื่อให้ SERIALIZABLE ใช้งานร่วมกับเวอร์ชันเก่าได้ | |
size_ | protected |
ขนาด | รับขนาดของช่องนี้ เนื่องจาก getSize() และ updateSize() มีผลข้างเคียง การดำเนินการนี้จะทำหน้าที่เป็นชิมสำหรับคลาสย่อยที่ต้องการปรับขอบเขตของช่องเมื่อตั้งค่า/รับขนาดโดยไม่ทริกเกอร์การแสดงผลที่ไม่ต้องการหรือผลข้างเคียงอื่นๆ โปรดทราบว่าคลาสย่อยต้องลบล้างทั้ง get และ set หากมีการลบล้างอย่างใดอย่างหนึ่ง การใช้งานอาจเรียก super โดยตรง แต่ต้องเป็นไปตามข้อกำหนดของ JS |
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 |
เชื่อมโยงเหตุการณ์กับช่อง คลาสย่อยสามารถลบล้างได้หากต้องการจัดการอินพุตที่กำหนดเอง |
canBeFocused() | ดู IFocusableNode.canBeFocused | |
configure_(config) | protected |
ประมวลผลแผนที่การกําหนดค่าที่ส่งไปยังช่อง |
createBorderRect_() | protected |
สร้างองค์ประกอบสี่เหลี่ยมผืนผ้าของเส้นขอบช่อง ไม่ให้คลาสย่อยลบล้าง ให้แก้ไขผลลัพธ์ของฟังก์ชันภายใน initView หรือสร้างฟังก์ชันแยกต่างหากเพื่อเรียกใช้แทน |
createTextElement_() | protected |
สร้างองค์ประกอบข้อความในช่อง ไม่ให้คลาสย่อยลบล้าง ให้แก้ไขผลลัพธ์ของฟังก์ชันภายใน initView หรือสร้างฟังก์ชันแยกต่างหากเพื่อเรียกใช้แทน |
dispose() | กำจัดออบเจ็กต์ DOM และเหตุการณ์ทั้งหมดที่เป็นของช่องที่แก้ไขได้นี้ | |
doClassValidation_(newValue) | protected |
ตรวจสอบการเปลี่ยนแปลงค่าของช่องก่อนที่จะตั้งค่า ดูตัวอย่างการใช้งานคลาสย่อยได้ที่ **FieldDropdown** **หมายเหตุ:** การยืนยันจะแสดงผลตัวเลือกเดียวระหว่าง |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
ใช้เพื่อแจ้งให้ช่องทราบว่ามีการป้อนค่าที่ไม่ถูกต้อง คลาสย่อยสามารถลบล้างได้ โปรดดู FieldTextInput ไม่มีการดำเนินการใดๆ โดยค่าเริ่มต้น |
doValueUpdate_(newValue) | protected |
ใช้เพื่ออัปเดตค่าของฟิลด์ คลาสย่อยสามารถลบล้างได้เพื่อทำการจัดเก็บค่า/การอัปเดตสิ่งต่างๆ ภายนอกที่กำหนดเอง |
forceRerender() | บังคับให้แสดงผลบล็อกที่ติดตั้งช่องนี้อีกครั้ง ซึ่งจะแสดงผลช่องนี้อีกครั้งและปรับขนาดตามการเปลี่ยนแปลง ช่องอื่นๆ ในบล็อกเดียวกันจะไม่แสดงผลอีกครั้งเนื่องจากระบบบันทึกขนาดของช่องไว้แล้ว | |
fromJson(_options) | static |
คลาสย่อยควรใช้เมธอดนี้อีกครั้งเพื่อสร้างคลาสย่อย Field จากออบเจ็กต์อาร์กิวเมนต์ JSON การพยายามลงทะเบียนคลาสย่อยของฟิลด์ใน FieldRegistry หากคลาสย่อยนั้นไม่ได้ลบล้างเมธอดนี้จะทำให้เกิดข้อผิดพลาด |
fromXml(fieldElement) | ตั้งค่าของช่องตามองค์ประกอบ XML ที่ระบุ ควรเรียกใช้โดย Blockly.Xml เท่านั้น | |
getAbsoluteXY_() | protected |
แสดงผลพิกัดสัมบูรณ์ของมุมบนซ้ายของช่องนี้ จุดเริ่มต้น (0,0) คือมุมซ้ายบนของเนื้อหาหน้าเว็บ |
getBorderRect() | protected |
รับองค์ประกอบสี่เหลี่ยมผืนผ้าของเส้นขอบ |
getClickTarget_() | protected |
องค์ประกอบที่จะเชื่อมโยงกับตัวแฮนเดิลการคลิก หากไม่ได้ตั้งค่าไว้อย่างชัดแจ้ง ระบบจะใช้รูท SVG ของช่องเป็นค่าเริ่มต้น เมื่อคลิกองค์ประกอบนี้ในช่องที่แก้ไขได้ เครื่องมือแก้ไขจะเปิดขึ้น |
getConstants() | รับผู้ให้บริการค่าคงที่ของโปรแกรมแสดงผล | |
getDisplayText_() | protected |
รับข้อความจากช่องนี้เพื่อแสดงในบล็อก อาจแตกต่างจาก getText เนื่องจากเครื่องหมายจุดหยีบและการจัดรูปแบบอื่นๆ |
getFlipRtl() | แสดงผลว่าควรพลิกช่องใน RTL หรือไม่ | |
getFocusableElement() | ดู IFocusableNode.getFocusableElement | |
getFocusableTree() | ดู IFocusableNode.getFocusableTree | |
getSize() | แสดงผลความสูงและความกว้างของช่อง *โดยทั่วไป* นี่เป็นที่เดียวที่เรียกใช้ render_ |
|
getSourceBlock() | รับบล็อกที่ช่องนี้แนบอยู่ | |
getSvgRoot() | รับองค์ประกอบกลุ่มสําหรับช่องที่แก้ไขได้นี้ ใช้สำหรับวัดขนาดและกำหนดตำแหน่ง | |
getText_() | protected |
ฮุกสําหรับนักพัฒนาแอปเพื่อลบล้างข้อความที่แสดงผลของช่องนี้ ลบล้างหากการนําเสนอค่าของช่องนี้เป็นข้อความไม่ใช่แค่การแคสต์ค่าเป็นสตริง แสดงผล Null เพื่อเปลี่ยนไปใช้การแคสต์สตริง |
getText() | รับข้อความจากช่องนี้ ลบล้าง getText_ เพื่อให้มีการทำงานแตกต่างจากการแคสต์ค่าเป็นสตริง | |
getTextContent() | protected |
รับเนื้อหาข้อความ |
getTextElement() | protected |
รับองค์ประกอบข้อความ |
getTooltip() | แสดงผลข้อความเคล็ดลับเครื่องมือสําหรับช่องนี้ | |
getValidator() | รับฟังก์ชันการตรวจสอบสำหรับฟิลด์ที่แก้ไขได้ หรือเป็นค่า Null หากไม่ได้ตั้งค่า | |
getValue() | รับค่าปัจจุบันของช่อง | |
initModel() | เริ่มต้นโมเดลของช่องหลังจากติดตั้งในบล็อกแล้ว ไม่มีการดำเนินการใดๆ โดยค่าเริ่มต้น | |
initView() | protected |
สร้าง UI ของบล็อกสําหรับช่องนี้ |
isClickable() | ตรวจสอบว่าช่องนี้กําหนดฟังก์ชัน showEditor_ หรือไม่ | |
isClickableInFlyout(autoClosingFlyout) | ตรวจสอบว่าช่องควรคลิกได้หรือไม่ขณะที่บล็อกอยู่ในเมนูแบบเลื่อนลง ค่าเริ่มต้นคือช่องจะคลิกได้ในเมนูแบบเลื่อนลงที่เปิดอยู่เสมอ เช่น กล่องเครื่องมือแบบง่าย แต่จะไม่คลิกได้ในเมนูแบบเลื่อนลงที่ปิดโดยอัตโนมัติ เช่น กล่องเครื่องมือหมวดหมู่ คลาสย่อยอาจลบล้างฟังก์ชันนี้เพื่อเปลี่ยนลักษณะการทำงานนี้ได้ โปรดทราบว่า isClickable จะต้องแสดงผลเป็น "จริง" ด้วยเพื่อให้การดําเนินการนี้มีผล |
|
isCurrentlyEditable() | ตรวจสอบว่าช่องนี้แก้ไขได้หรือไม่ บางช่องจะแก้ไขไม่ได้ (เช่น ป้ายกำกับข้อความ) ช่องอื่นๆ อาจแก้ไขได้ แต่อาจอยู่ในบล็อกที่แก้ไขไม่ได้หรือปิดใช้อยู่ | |
isEnabled() | ตรวจสอบว่าค่าของฟิลด์นี้เปลี่ยนแปลงได้โดยใช้เครื่องมือแก้ไขเมื่อบล็อกแหล่งที่มาแก้ไขได้หรือไม่ | |
isSerializable() | ตรวจสอบว่าโปรแกรมแสดงผล XML ควรจัดรูปแบบฟิลด์นี้หรือไม่ จัดการตรรกะสําหรับความเข้ากันได้แบบย้อนหลังและสถานะที่ขัดแย้งกัน | |
isVisible() | รับว่าช่องที่แก้ไขได้นี้มองเห็นได้หรือไม่ | |
loadLegacyState(callingClass, state) | โหลดสถานะที่ระบุโดยใช้ฮุก XML แบบเก่า หากควรใช้ แสดงผลเป็น "จริง" เพื่อระบุว่าจัดการการโหลดแล้ว หรือแสดงผลเป็น "เท็จ" หากไม่เป็นเช่นนั้น | |
loadState(state) | ตั้งค่าสถานะของช่องตามค่าสถานะที่ระบุ ควรเรียกใช้โดยระบบการจัดทําซีเรียลเท่านั้น | |
onLocationChange(_) | แจ้งให้ช่องทราบว่าได้เปลี่ยนตำแหน่งแล้ว | |
onMouseDown_(e) | protected |
จัดการเหตุการณ์ pointerdown ในช่อง |
onNodeBlur() | โปรดดู IFocusableNode.onNodeBlur | |
onNodeFocus() | โปรดดู IFocusableNode.onNodeFocus | |
onShortcut(_shortcut) | จัดการแป้นพิมพ์ลัดที่ระบุ | |
positionBorderRect_() | protected |
วางตำแหน่งสี่เหลี่ยมผืนผ้าขอบของช่องหลังจากมีการเปลี่ยนแปลงขนาด |
positionTextElement_(xOffset, contentWidth) | protected |
จัดตําแหน่งองค์ประกอบข้อความของช่องหลังจากมีการเปลี่ยนแปลงขนาด ซึ่งจะจัดการทั้งการจัดวางตำแหน่งแบบ LTR และ RTL |
referencesVariables() | ช่องนี้อ้างอิงตัวแปร Blockly หรือไม่ หากเป็นจริง ก็อาจต้องจัดการต่างกันระหว่างการจัดเก็บและถอดรหัส คลาสย่อยอาจลบล้างค่านี้ | |
refreshVariableName() | รีเฟรชชื่อตัวแปรที่ช่องนี้อ้างอิงหากช่องนี้อ้างอิงตัวแปร | |
render_() | protected |
ใช้ใน getSize() เพื่อย้าย/ปรับขนาดองค์ประกอบ DOM และรับขนาดใหม่ การแสดงผลทั้งหมดที่ส่งผลต่อขนาด/รูปร่างของบล็อกควรทำที่นี่ และควรทริกเกอร์โดย getSize() |
repositionForWindowResize() | ฮุกสำหรับนักพัฒนาซอฟต์แวร์เพื่อจัดตำแหน่ง WidgetDiv ใหม่ระหว่างการปรับขนาดหน้าต่าง คุณต้องกําหนดฮุกนี้หากช่องมี WidgetDiv ที่ต้องจัดตําแหน่งใหม่เมื่อปรับขนาดหน้าต่าง เช่น ช่องป้อนข้อความจะกําหนดฮุกนี้เพื่อให้ WidgetDiv ของอินพุตสามารถจัดตําแหน่งใหม่ในเหตุการณ์การปรับขนาดหน้าต่าง ซึ่งสำคัญอย่างยิ่งเมื่อปิดใช้อินพุตแบบโมดัล เนื่องจากอุปกรณ์ Android จะเรียกเหตุการณ์การปรับขนาดหน้าต่างเมื่อเปิดแป้นพิมพ์บนหน้าจอ หากต้องการให้ WidgetDiv ซ่อนตัวเองแทนที่จะเปลี่ยนตำแหน่ง ให้แสดงผลเป็นเท็จ นี่คือลักษณะการทำงานเริ่มต้น DropdownDiv จะจัดการตรรกะการจัดตำแหน่งของตนเองอยู่แล้ว คุณจึงไม่จำเป็นต้องลบล้างฟังก์ชันนี้หากช่องมีเพียง DropdownDiv |
|
saveLegacyState(callingClass) | protected |
แสดงสถานะ XML ในรูปแบบสตริง หากควรใช้ มิเช่นนั้น ระบบจะแสดงผลเป็น Null เพื่อบ่งบอกว่าช่องควรใช้การแปลงเป็นอนุกรมของตนเอง |
saveState(_doFullSerialization) | บันทึกค่าของช่องนี้เป็นค่าที่แปลงเป็น JSON ได้ ควรเรียกใช้โดยระบบการจัดทําซีเรียลเท่านั้น | |
setEnabled(enabled) | ตั้งค่าว่าค่าของช่องนี้จะเปลี่ยนแปลงได้โดยใช้เครื่องมือแก้ไขเมื่อบล็อกแหล่งที่มาแก้ไขได้หรือไม่ | |
setSourceBlock(block) | แนบช่องนี้กับบล็อก | |
setTooltip(newTip) | ตั้งค่าเคล็ดลับเครื่องมือสำหรับช่องนี้ | |
setValidator(handler) | ตั้งค่าฟังก์ชันการตรวจสอบใหม่สําหรับช่องที่แก้ไขได้ หรือล้างโปรแกรมตรวจสอบที่ตั้งไว้ก่อนหน้านี้ ฟังก์ชันโปรแกรมตรวจสอบจะรับค่าช่องใหม่และแสดงผลค่าที่ตรวจสอบแล้ว ค่าที่ตรวจสอบแล้วอาจเป็นค่าอินพุต ค่าอินพุตเวอร์ชันที่แก้ไขแล้ว หรือค่าว่างเพื่อยกเลิกการเปลี่ยนแปลง หากฟังก์ชันไม่แสดงผลใดๆ (หรือแสดงผลเป็น "ไม่ระบุ") ระบบจะถือว่าค่าใหม่ถูกต้อง การดำเนินการนี้ช่วยให้ฟิลด์ใช้ฟังก์ชันที่ตรวจสอบแล้วเป็นการแจ้งเตือนเหตุการณ์การเปลี่ยนแปลงระดับฟิลด์ได้ |
|
setValue(newValue, fireChangeEvent) | ใช้เพื่อเปลี่ยนค่าของช่อง จัดการการตรวจสอบและเหตุการณ์ คลาสย่อยควรลบล้าง doClassValidation_ และ doValueUpdate_ แทนที่จะใช้เมธอดนี้ | |
showEditor_(_e) | protected |
ฮุกสำหรับนักพัฒนาแอปเพื่อสร้างเครื่องมือแก้ไขสำหรับช่อง ซึ่งจะไม่มีผลโดยค่าเริ่มต้น และต้องลบล้างเพื่อสร้างผู้แก้ไข |
toXml(fieldElement) | แปลงค่าของช่องนี้เป็น XML ควรเรียกใช้โดย Blockly.Xml เท่านั้น | |
updateEditable() | เพิ่มหรือนำ UI ที่ระบุว่าช่องนี้แก้ไขได้หรือไม่ออก | |
updateSize_(margin) | protected |
อัปเดตขนาดของช่องตามข้อความ |