blockly > ช่อง

คลาสภาคสนาม

คลาสนามธรรมสำหรับช่องที่แก้ไขได้

ลายเซ็น:

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

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

ผู้ผลิต

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

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

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

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

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

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

static

readonly

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

static

readonly

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

เมธอด

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

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

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

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

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
doValueAPI ไม่ถูกต้อง_(_invalidValue, _fireChangeEvent) protected ใช้เพื่อแจ้งให้ช่องทราบว่าป้อนค่าที่ไม่ถูกต้อง สามารถลบล้างได้ด้วยคลาสย่อย โปรดดู FieldTextInput ไม่มีการดำเนินการโดยค่าเริ่มต้น
doValueUpdate_(newValue) protected ใช้เพื่ออัปเดตค่าของช่อง สามารถลบล้างโดยคลาสย่อยเพื่อจัดเก็บค่าที่กำหนดเอง/อัปเดตของสิ่งต่างๆ ภายนอก
fromJson(_options) static

คลาสย่อยควรนำเมธอดนี้ไปใช้ใหม่เพื่อสร้างคลาสย่อยฟิลด์จากออบเจ็กต์อาร์กิวเมนต์ JSON

เกิดข้อผิดพลาดในการพยายามลงทะเบียนคลาสย่อยฟิลด์ใน FieldRegistry หากคลาสย่อยดังกล่าวไม่ได้ลบล้างเมธอดนี้

getAbsoluteXY_() protected แสดงพิกัดสัมบูรณ์ของมุมซ้ายบนของฟิลด์นี้ จุดเริ่มต้น (0,0) คือมุมซ้ายบนของส่วนเนื้อหาในหน้า
getBorderRect() protected รับองค์ประกอบสี่เหลี่ยมผืนผ้าเส้นขอบ
getClickTarget_() protected องค์ประกอบที่จะเชื่อมโยงตัวจัดการการคลิก หากไม่ได้ตั้งค่าไว้อย่างชัดแจ้ง ค่าเริ่มต้นจะเป็นราก SVG ของช่อง เมื่อคลิกองค์ประกอบนี้ในช่องที่แก้ไขได้ ตัวแก้ไขจะเปิดขึ้น
getConstants() รับผู้ให้บริการค่าคงที่สำหรับโหมดแสดงภาพ
getDisplayText_() protected รับข้อความจากฟิลด์นี้เพื่อแสดงบนบล็อก อาจแตกต่างจาก getText เนื่องจากจุดไข่ปลาและการจัดรูปแบบอื่นๆ
getFlipRtl() แสดงผลว่าเราควรพลิกฟิลด์ด้วย RTL หรือไม่
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() ตรวจสอบว่าค่าของช่องนี้สามารถเปลี่ยนโดยใช้ตัวแก้ไขเมื่อแก้ไขการบล็อกแหล่งที่มาได้หรือไม่
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 ระหว่างการปรับขนาดหน้าต่าง คุณต้องระบุ Hook นี้หากฟิลด์ของคุณมี WidgetDiv ที่ต้องปรับตำแหน่งตัวเองเมื่อมีการปรับขนาดหน้าต่าง ตัวอย่างเช่น ช่องป้อนข้อความจะกำหนดฮุกนี้เพื่อให้ WidgetDiv ของอินพุตเปลี่ยนตำแหน่งตัวเองในเหตุการณ์การปรับขนาดหน้าต่างได้ การดำเนินการนี้สำคัญอย่างยิ่งเมื่อปิดใช้อินพุตแบบโมดัล เนื่องจากอุปกรณ์ Android จะเริ่มเหตุการณ์การปรับขนาดหน้าต่างเมื่อซอฟต์แป้นพิมพ์เปิดขึ้น

หากคุณต้องการให้ WidgetDiv ซ่อนตัวเองแทนที่จะเปลี่ยนตำแหน่ง ให้แสดงผลเท็จ นี่คือลักษณะการทำงานเริ่มต้น

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

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

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

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

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

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