blockly > ช่อง

คลาสฟิลด์

คลาสนามธรรมสำหรับฟิลด์ที่แก้ไขได้

ลายเซ็น:

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

การนำไปใช้งาน: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

ผู้ผลิต

ผู้ผลิต ตัวปรับแต่ง คำอธิบาย
(constructor)(ค่า, โปรแกรมตรวจสอบ, การกำหนดค่า) สร้างอินสแตนซ์ใหม่ของคลาส Field

พร็อพเพอร์ตี้

พร็อพเพอร์ตี้ ตัวปรับแต่ง Type คำอธิบาย
borderRect_ protected SVGRectElement | null องค์ประกอบเส้นขอบ SVG ของช่องที่แสดงผล
clickTarget_ protected องค์ประกอบ | null องค์ประกอบที่เชื่อมโยงกับเครื่องจัดการคลิก
constants_ protected ConstantProvider | null ค่าคงที่ที่เชื่อมโยงกับตัวแสดงผลของบล็อกแหล่งที่มา
เคอร์เซอร์ สตริง รูปแบบของเคอร์เซอร์เมาส์เมื่อวางไว้เหนือฮอตสปอตที่เริ่มต้นเครื่องมือแก้ไข
DEFAULT_VALUE T | null

หากต้องการเขียนทับค่าเริ่มต้นที่ตั้งไว้ใน **ฟิลด์** ให้อัปเดตต้นแบบโดยตรง

เช่น FieldImage.prototype.DEFAULT_VALUE = null;

แก้ไขได้ boolean ช่องที่แก้ไขได้มักจะแสดง UI บางประเภทที่บ่งชี้ว่าสามารถแก้ไขได้ นอกจากนี้ ตัวซีเรียลไลเซอร์ยังบันทึกชุดสัญญาณเหล่านี้เอาไว้ด้วย
enabled_ protected boolean เปลี่ยนค่าของช่องได้โดยใช้เครื่องมือแก้ไขในบล็อกที่แก้ไขได้ไหม
fieldGroup_ protected SVGGElement | null องค์ประกอบกลุ่ม SVG ของช่องที่แสดงผล
isDirty_ protected boolean ต้องแสดงผลบล็อกนี้อีกครั้งไหม
maxDisplayLength ตัวเลข จำนวนอักขระสูงสุดของข้อความที่จะแสดงก่อนเพิ่มจุดไข่ปลา
ชื่อ? สตริง (ไม่บังคับ) ชื่อช่อง ไม่ซ้ำกันภายในแต่ละบล็อก ป้ายกำกับแบบคงที่มักจะไม่มีการตั้งชื่อ
NBSP

static

readonly

(ไม่ได้ประกาศ) การเว้นวรรคที่ไม่ขึ้นบรรทัดใหม่
นำไปใช้ได้จริง boolean ช่องแบบอนุกรมจะได้รับการบันทึกโดยตัวซีเรียลไลเซอร์ ช่องที่ไม่สามารถทำให้เป็นอนุกรมไม่ได้ ช่องที่แก้ไขได้ควรมีการเรียงลำดับได้ โดยจะไม่เป็นเช่นนั้นโดยค่าเริ่มต้น ทำให้ SERIALIZABLE เข้ากันได้แบบย้อนหลัง
size_ protected ขนาด
SKIP_SETUP

static

readonly

สัญลักษณ์ที่ไม่ซ้ำกัน ค่าที่ใช้ส่งสัญญาณเมื่อตัวสร้างของช่องต้อง *ไม่* กำหนดค่าของฟิลด์หรือเรียกใช้ Configuration_ และควรอนุญาตให้คลาสย่อยทำเช่นนั้นแทน
sourceBlock_ protected บล็อก | null บล็อกการแนบช่องนี้ เริ่มต้นเป็น Null จากนั้นตั้งค่า Init
textContent_ protected ข้อความ | null องค์ประกอบเนื้อหาข้อความของช่องที่แสดงผล
textElement_ protected SVGTextElement | null องค์ประกอบข้อความ SVG ของช่องที่แสดงผล
validator_ protected FieldValidator<T> | null ระบบจะเรียกใช้ฟังก์ชันตรวจสอบเมื่อผู้ใช้แก้ไขช่องที่แก้ไขได้
value_ protected T | null
visible_ protected boolean ช่องนี้มองเห็นได้หรือถูกซ่อนเนื่องจากการบล็อกถูกยุบ

วิธีการ

วิธีการ ตัวปรับแต่ง คำอธิบาย
applyColour()

อัปเดตฟิลด์ให้ตรงกับสี/รูปแบบของบล็อก

คลาสย่อยที่ไม่ใช่นามธรรมอาจต้องการใช้การตั้งค่านี้หากสีของฟิลด์ขึ้นอยู่กับสีของบล็อก โดยจะมีการเรียกใช้โดยอัตโนมัติตามเวลาที่เกี่ยวข้อง เช่น เมื่อบล็อกระดับบนสุดหรือโหมดแสดงภาพมีการเปลี่ยนแปลง

โปรดดูเอกสารประกอบของช่องสำหรับข้อมูลเพิ่มเติม หรือดูตัวอย่างใน FieldDropdown

bindEvents_() protected เชื่อมโยงเหตุการณ์กับช่อง คลาสย่อยสามารถลบล้างได้ในกรณีที่ต้องจัดการอินพุตที่กำหนดเอง
configure_(config) protected ประมวลผลการจับคู่การกำหนดค่าที่ส่งไปยังฟิลด์
createBorderRect_() protected สร้างองค์ประกอบสี่เหลี่ยมผืนผ้าตรงขอบช่อง ไม่ลบล้างโดยคลาสย่อย แต่ให้แก้ไขผลลัพธ์ของฟังก์ชันภายใน initView หรือสร้างฟังก์ชันแยกต่างหากเพื่อใช้ในการเรียกใช้
createTextElement_() protected สร้างองค์ประกอบข้อความในช่อง ไม่ลบล้างโดยคลาสย่อย แต่ให้แก้ไขผลลัพธ์ของฟังก์ชันภายใน initView หรือสร้างฟังก์ชันแยกต่างหากเพื่อใช้ในการเรียกใช้
doClassValidation_(newValue) protected

ตรวจสอบการเปลี่ยนแปลงค่าของช่องก่อนที่จะตั้งค่า ดู **FieldDropdown** เพื่อดูตัวอย่างการใช้งานคลาสย่อย

**หมายเหตุ:** การตรวจสอบจะแสดงตัวเลือก 1 รายการระหว่าง T, null และ undefined การใช้งานของ **ช่อง** จะไม่แสดงค่า undefined แต่จะใช้ในคลาสย่อยที่จะแสดงผล undefined ได้ หากค่าใหม่เข้ากันได้กับ T

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()

แสดงความสูงและความกว้างของฟิลด์

ที่ควร *โดยทั่วไป* ควรเป็นที่เดียวที่มีการเรียกใช้ Display_

getSourceBlock() รับบล็อกที่แนบกับช่องนี้
getSvgRoot() รับองค์ประกอบกลุ่มสำหรับช่องที่แก้ไขได้นี้ ใช้สำหรับวัดขนาดและตำแหน่ง
getText_() protected ฮุกของนักพัฒนาซอฟต์แวร์ที่จะลบล้างข้อความที่แสดงผลในช่องนี้ ลบล้างหากการนำเสนอข้อความของค่าของช่องนี้ไม่ใช่แค่สตริงของค่า เปลี่ยนค่า Null กลับไปเป็นค่าปัจจุบันสำหรับการแคสต์สตริง
getText() รับข้อความจากช่องนี้ ลบล้าง getText_ เพื่อให้ลักษณะการทำงานที่แตกต่างจากการแคสต์ค่าเป็นสตริง
getTextContent() protected รับเนื้อหาข้อความ
getTextElement() protected รับองค์ประกอบข้อความ
getTooltip() แสดงผลข้อความเคล็ดลับเครื่องมือสำหรับช่องนี้
getValidator() รับฟังก์ชันการตรวจสอบสำหรับช่องที่แก้ไขได้ หรือหากไม่ได้ตั้งค่าไว้
getValue() รับค่าปัจจุบันของช่อง
initModel() เริ่มต้นโมเดลของช่องหลังจากติดตั้งในบล็อกแล้ว ไม่มีการดำเนินการโดยค่าเริ่มต้น
initView() protected สร้าง UI การบล็อกสำหรับฟิลด์นี้
isClickable() ตรวจสอบว่าช่องนี้กำหนดฟังก์ชัน showEditor_ หรือไม่
isClickableInFlyout(autoClosingFlyout) ตรวจสอบว่าฟิลด์นี้ควรคลิกได้หรือไม่ขณะที่บล็อกอยู่ในหน้าต่าง ค่าเริ่มต้นคือฟิลด์ที่สามารถคลิกได้ในฟิลด์ที่เปิดตลอดเวลา เช่น กล่องเครื่องมือแบบง่าย แต่ไม่ใช่ใน flyout การปิดอัตโนมัติ เช่น กล่องเครื่องมือหมวดหมู่ คลาสย่อยอาจลบล้างฟังก์ชันนี้เพื่อเปลี่ยนลักษณะการทำงานนี้ โปรดทราบว่า isClickable จะต้องคืนค่า "จริง" ด้วยเพื่อให้มีผล
isCurrentlyEditable() ตรวจสอบว่าปัจจุบันแก้ไขช่องนี้ได้หรือไม่ บางช่องจะแก้ไขไม่ได้ (เช่น ป้ายกำกับข้อความ) ช่องอื่นๆ อาจแก้ไขได้ แต่อาจปรากฏในบล็อกที่แก้ไขไม่ได้หรือปิดใช้อยู่ในปัจจุบัน
isEnabled() ตรวจสอบว่าค่าของช่องนี้เปลี่ยนแปลงได้โดยใช้เครื่องมือแก้ไขหรือไม่เมื่อแก้ไขบล็อกแหล่งที่มาได้
isFullBlockField() protected

กำหนดว่าช่องนี้จะใช้บล็อกทั้งหมดหรือไม่

โปรดใช้ความระมัดระวังเมื่อลบล้างฟังก์ชันนี้ อาจไม่ได้ผลตามที่คุณคาดไว้ / ไม่ได้ตั้งใจเนื่องจากพฤติกรรมนั้นถูกลักลอบใช้ หากคุณกำลังคิดที่จะยกเลิกฟังก์ชันนี้ ให้โพสต์พฤติกรรมที่คุณตั้งใจไว้ในฟอรัมเพื่อดูว่ามีวิธีการอื่นหรือไม่

isSerializable() ตรวจสอบว่าตัวแสดงผล XML ควรทำให้ช่องนี้เป็นอนุกรมหรือไม่ จัดการตรรกะสำหรับความเข้ากันได้แบบย้อนหลังและสถานะที่ไม่สอดคล้องกัน
isTabNavigable() แสดงผลว่าผู้ใช้สามารถไปยังส่วนต่างๆ ของแท็บได้หรือไม่
isVisible() กำหนดว่าฟิลด์ที่แก้ไขได้นี้จะปรากฏหรือไม่
loadLegacyState(callingClass, state) โหลดสถานะที่ระบุโดยใช้ฮุก XML แบบเก่า หากควรใช้ แสดงค่า "จริง" เพื่อระบุว่ามีการจัดการการโหลดแล้ว หากไม่เป็นเช่นนั้นจะเป็นเท็จ
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 ซ่อนตัวเอง แทนที่จะเปลี่ยนตำแหน่ง ให้ส่งคืนค่าเท็จ นี่คือลักษณะการทำงานเริ่มต้น

DropdownDivs จัดการตรรกะการกำหนดตำแหน่งของตนเองอยู่แล้ว ดังนั้นคุณไม่จำเป็นต้องลบล้างฟังก์ชันนี้หากช่องมี DropdownDiv เพียงอย่างเดียว

saveLegacyState(callingClass) protected แสดงผลสถานะ XML ในเวอร์ชันสตริง หากควรใช้ มิเช่นนั้นจะแสดงผลเป็น Null เพื่อส่งสัญญาณว่าช่องนี้ควรใช้การเรียงอันดับของตนเอง
setEnabled(enabled) กำหนดว่าจะเปลี่ยนแปลงค่าของช่องนี้โดยใช้ตัวแก้ไขได้หรือไม่เมื่อแก้ไขบล็อกแหล่งที่มาได้
setSourceBlock(block) แนบฟิลด์นี้ไปยังบล็อก
setTooltip(newTip) ตั้งค่าเคล็ดลับเครื่องมือสำหรับช่องนี้
setValidator(handler)

ตั้งค่าฟังก์ชันการตรวจสอบใหม่สำหรับช่องที่แก้ไขได้ หรือล้างเครื่องมือตรวจสอบที่ตั้งค่าไว้ก่อนหน้านี้

ฟังก์ชันเครื่องมือตรวจสอบจะใช้ค่าฟิลด์ใหม่ และแสดงผลค่าที่ตรวจสอบแล้ว ค่าที่ตรวจสอบความถูกต้องอาจเป็นค่าอินพุต เวอร์ชันที่มีการแก้ไขของค่าอินพุต หรือค่าว่างเพื่อยกเลิกการเปลี่ยนแปลง

หากฟังก์ชันไม่แสดงผลลัพธ์ใดๆ (หรือแสดงผลสถานะไม่กําหนด) ระบบจะยอมรับค่าใหม่ว่าถูกต้อง วิธีนี้เป็นการอนุญาตสำหรับฟิลด์ที่ใช้ฟังก์ชันที่ตรวจสอบแล้วเป็นการแจ้งเตือนเหตุการณ์การเปลี่ยนแปลงระดับฟิลด์

setValue(newValue, fireChangeEvent) ใช้เพื่อเปลี่ยนค่าของช่อง จัดการการตรวจสอบและเหตุการณ์ คลาสย่อยควรลบล้าง doClassValidation_ และ doValueUpdate_ มากกว่าวิธีการนี้
showEditor_(_e) protected ฮุกของนักพัฒนาซอฟต์แวร์สำหรับสร้างโปรแกรมแก้ไขสำหรับช่อง โดยค่าเริ่มต้น คำสั่งนี้จะไม่มีการดำเนินการ และจะต้องแทนที่เพื่อสร้างตัวแก้ไข
updateEditable() เพิ่มหรือนำ UI ที่บ่งชี้ว่าช่องนี้แก้ไขได้หรือไม่
updateSize_(margin) protected อัปเดตขนาดของฟิลด์ตามข้อความ