Lớp trường
Lớp trừu tượng cho trường có thể chỉnh sửa.
Chữ ký:
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Triển khai: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Hàm khởi tạo
Hàm dựng | Đối tượng sửa đổi | Mô tả |
---|---|---|
(constructor)(value, validator, config) | Tạo một thực thể mới của lớp Field |
Thuộc tính
Thuộc tính | Đối tượng sửa đổi | Loại | Mô tả |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | Phần tử đường viền SVG của trường đã kết xuất. |
clickTarget_ | protected |
Phần tử | rỗng | Phần tử liên kết với trình xử lý lượt nhấp. |
constants_ | protected |
ConstantProvider | null | Các hằng số được liên kết với trình kết xuất của khối nguồn. |
DEFAULT_VALUE | T | null | Để ghi đè giá trị mặc định được đặt trong **Field** (Trường), hãy cập nhật trực tiếp nguyên mẫu. Ví dụ: |
|
EDITABLE | boolean | Các trường có thể chỉnh sửa thường hiển thị một số loại giao diện người dùng cho biết chúng có thể chỉnh sửa. Trình chuyển đổi tuần tự cũng sẽ lưu các giá trị này. | |
enabled_ | protected |
boolean | Có thể thay đổi giá trị trường bằng trình chỉnh sửa trên một khối có thể chỉnh sửa không? |
fieldGroup_ | protected |
SVGGElement | null | Phần tử nhóm SVG của trường đã kết xuất. |
isDirty_ | protected |
boolean | Khối này có cần kết xuất lại không? |
maxDisplayLength | số | Số ký tự tối đa của văn bản cần hiển thị trước khi thêm dấu ba chấm. | |
tên? | chuỗi | (Không bắt buộc) Tên trường. Riêng biệt trong mỗi khối. Nhãn tĩnh thường không có tên. | |
NBSP |
|
(chưa khai báo) | Dấu cách không ngắt dòng. |
SERIALIZABLE | boolean | Trình chuyển đổi tuần tự sẽ lưu các trường có thể chuyển đổi tuần tự, còn các trường không thể chuyển đổi tuần tự thì không. Các trường có thể chỉnh sửa cũng phải có thể chuyển đổi tuần tự. Theo mặc định, điều này không đúng để SERIALIZABLE có khả năng tương thích ngược. | |
size_ | protected |
Kích thước | Lấy kích thước của trường này. Vì getSize() và updateSize() có các hiệu ứng phụ, nên lớp này đóng vai trò là lớp đệm cho các lớp con muốn điều chỉnh giới hạn trường khi đặt/lấy kích thước mà không kích hoạt quá trình kết xuất không mong muốn hoặc các hiệu ứng phụ khác. Xin lưu ý rằng các lớp con phải ghi đè *cả* phương thức get và set nếu một trong hai phương thức này bị ghi đè; phương thức triển khai có thể chỉ gọi trực tiếp đến lớp cha, nhưng phương thức này phải tồn tại theo thông số kỹ thuật JS. |
SKIP_SETUP |
|
ký hiệu duy nhất | Giá trị dùng để báo hiệu thời điểm hàm khởi tạo của trường *không* được đặt giá trị của trường hoặc chạy configure_, mà phải cho phép lớp con thực hiện việc đó. |
sourceBlock_ | protected |
Chặn | null | Khối được liên kết với trường này. Bắt đầu ở trạng thái rỗng, sau đó đặt trong init. |
textContent_ | protected |
Văn bản | null | Phần tử nội dung văn bản của trường đã kết xuất. |
textElement_ | protected |
SVGTextElement | null | Phần tử văn bản SVG của trường đã kết xuất. |
validator_ | protected |
FieldValidator<T> | null | Hàm xác thực được gọi khi người dùng chỉnh sửa một trường có thể chỉnh sửa. |
value_ | protected |
T | null | |
visible_ | protected |
boolean | Trường này có hiển thị hay bị ẩn do khối bị thu gọn không? |
Phương thức
Phương thức | Đối tượng sửa đổi | Mô tả |
---|---|---|
applyColour() | Cập nhật trường để khớp với màu/kiểu của khối. Các lớp con không trừu tượng có thể muốn triển khai tính năng này nếu màu của trường phụ thuộc vào màu của khối. Phương thức này sẽ tự động được gọi vào những thời điểm thích hợp, chẳng hạn như khi khối mẹ hoặc trình kết xuất thay đổi. Hãy xem tài liệu về trường để biết thêm thông tin hoặc xem ví dụ về FieldDropdown. |
|
bindEvents_() | protected |
Liên kết các sự kiện với trường. Các lớp con có thể ghi đè nếu cần xử lý dữ liệu đầu vào tuỳ chỉnh. |
canBeFocused() | Xem IFocusableNode.canBeFocused. | |
configure_(config) | protected |
Xử lý bản đồ cấu hình được truyền đến trường. |
createBorderRect_() | protected |
Tạo phần tử hình chữ nhật đường viền trường. Không được lớp con ghi đè. Thay vào đó, hãy sửa đổi kết quả của hàm bên trong initView hoặc tạo một hàm riêng để gọi. |
createTextElement_() | protected |
Tạo thành phần văn bản trường. Không được lớp con ghi đè. Thay vào đó, hãy sửa đổi kết quả của hàm bên trong initView hoặc tạo một hàm riêng để gọi. |
dispose() | Xoá tất cả đối tượng và sự kiện DOM thuộc trường có thể chỉnh sửa này. | |
doClassValidation_(newValue) | protected |
Xác thực các thay đổi đối với giá trị của một trường trước khi đặt các thay đổi đó. Hãy xem **FieldDropdown** để biết ví dụ về cách triển khai lớp con. **LƯU Ý:** Tính năng xác thực sẽ trả về một tuỳ chọn giữa |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
Dùng để thông báo cho trường về việc nhập giá trị không hợp lệ. Các lớp con có thể ghi đè, hãy xem FieldTextInput. Không hoạt động theo mặc định. |
doValueUpdate_(newValue) | protected |
Dùng để cập nhật giá trị của một trường. Các lớp con có thể ghi đè để lưu trữ tuỳ chỉnh các giá trị/cập nhật các nội dung bên ngoài. |
forceRerender() | Buộc hiển thị lại khối mà trường này được cài đặt trên đó. Thao tác này sẽ hiển thị lại trường này và điều chỉnh mọi thay đổi về kích thước. Các trường khác trên cùng một khối sẽ không hiển thị lại vì kích thước của các trường đó đã được ghi lại. | |
fromJson(_options) | static |
Các lớp con phải triển khai lại phương thức này để tạo lớp con Field từ đối tượng đối số JSON. Bạn sẽ gặp lỗi khi cố gắng đăng ký một lớp con trường trong FieldRegistry nếu lớp con đó chưa ghi đè phương thức này. |
fromXml(fieldElement) | Đặt giá trị của trường dựa trên phần tử XML đã cho. Chỉ được Blockly.Xml gọi. | |
getAbsoluteXY_() | protected |
Trả về toạ độ tuyệt đối của góc trên cùng bên trái của trường này. Điểm gốc (0,0) là góc trên cùng bên trái của phần nội dung trang. |
getBorderRect() | protected |
Lấy phần tử hình chữ nhật đường viền. |
getClickTarget_() | protected |
Phần tử để liên kết trình xử lý lượt nhấp. Nếu không được đặt rõ ràng, giá trị mặc định sẽ là thư mục gốc SVG của trường. Khi bạn nhấp vào phần tử này trên một trường có thể chỉnh sửa, trình chỉnh sửa sẽ mở ra. |
getConstants() | Lấy trình cung cấp hằng số trình kết xuất. | |
getDisplayText_() | protected |
Lấy văn bản từ trường này để hiển thị trên khối. Có thể khác với getText do dấu ba chấm và các định dạng khác. |
getFlipRtl() | Trả về kết quả về việc có nên lật trường theo RTL hay không. | |
getFocusableElement() | Xem IFocusableNode.getFocusableElement. | |
getFocusableTree() | Xem IFocusableNode.getFocusableTree. | |
getSize() | Trả về chiều cao và chiều rộng của trường. *Nhìn chung*, đây là nơi duy nhất mà render_ được gọi. |
|
getSourceBlock() | Lấy khối mà trường này được đính kèm. | |
getSvgRoot() | Lấy phần tử nhóm cho trường có thể chỉnh sửa này. Dùng để đo lường kích thước và định vị. | |
getText_() | protected |
Một trình bổ trợ dành cho nhà phát triển để ghi đè văn bản được trả về của trường này. Ghi đè nếu nội dung đại diện văn bản của giá trị trường này không chỉ là một chuỗi truyền giá trị của trường. Trả về giá trị rỗng để chuyển sang truyền chuỗi. |
getText() | Lấy văn bản từ trường này. Ghi đè getText_ để cung cấp một hành vi khác với việc chỉ truyền giá trị thành một chuỗi. | |
getTextContent() | protected |
Lấy nội dung văn bản. |
getTextElement() | protected |
Lấy phần tử văn bản. |
getTooltip() | Trả về văn bản chú giải công cụ cho trường này. | |
getValidator() | Lấy hàm xác thực cho các trường có thể chỉnh sửa hoặc giá trị rỗng nếu không được đặt. | |
getValue() | Lấy giá trị hiện tại của trường. | |
initModel() | Khởi chạy mô hình của trường sau khi trường đó được cài đặt trên một khối. Không hoạt động theo mặc định. | |
initView() | protected |
Tạo giao diện người dùng khối cho trường này. |
isClickable() | Kiểm tra xem trường này có xác định hàm showEditor_ hay không. | |
isClickableInFlyout(autoClosingFlyout) | Kiểm tra xem trường có thể nhấp được hay không khi khối ở dạng bật lên. Theo mặc định, bạn có thể nhấp vào các trường trong trình đơn bật lên luôn mở, chẳng hạn như hộp công cụ đơn giản, nhưng không thể nhấp vào các trình đơn bật lên tự động đóng, chẳng hạn như hộp công cụ danh mục. Các lớp con có thể ghi đè hàm này để thay đổi hành vi này. Xin lưu ý rằng isClickable cũng phải trả về true để thao tác này có hiệu lực. |
|
isCurrentlyEditable() | Kiểm tra xem trường này có thể chỉnh sửa được hay không. Một số trường không bao giờ CÓ THỂ CHỈNH SỬA (ví dụ: nhãn văn bản). Các trường khác có thể CHỈNH SỬA được nhưng có thể tồn tại trên các khối không chỉnh sửa được hoặc hiện đang bị vô hiệu hoá. | |
isEnabled() | Kiểm tra xem bạn có thể thay đổi giá trị của trường này bằng trình chỉnh sửa khi khối nguồn có thể chỉnh sửa hay không. | |
isSerializable() | Kiểm tra xem trình kết xuất XML có phải chuyển đổi tuần tự trường này hay không. Xử lý logic cho khả năng tương thích ngược và các trạng thái không phù hợp. | |
isVisible() | Lấy thông tin về việc trường có thể chỉnh sửa này có hiển thị hay không. | |
loadLegacyState(callingClass, state) | Tải trạng thái đã cho bằng các trình nối XML cũ, nếu cần sử dụng. Trả về true để cho biết quá trình tải đã được xử lý, nếu không thì trả về false. | |
loadState(state) | Đặt trạng thái của trường dựa trên giá trị trạng thái đã cho. Chỉ được hệ thống chuyển đổi tuần tự gọi. | |
onLocationChange(_) | Thông báo cho trường rằng trường đó đã thay đổi vị trí. | |
onMouseDown_(e) | protected |
Xử lý sự kiện con trỏ xuống trên một trường. |
onNodeBlur() | Xem IFocusableNode.onNodeBlur. | |
onNodeFocus() | Xem IFocusableNode.onNodeFocus. | |
onShortcut(_shortcut) | Xử lý phím tắt đã cho. | |
positionBorderRect_() | protected |
Định vị hình chữ nhật đường viền của trường sau khi thay đổi kích thước. |
positionTextElement_(xOffset, contentWidth) | protected |
Định vị phần tử văn bản của trường sau khi thay đổi kích thước. Phương thức này xử lý cả vị trí LTR và RTL. |
referencesVariables() | Liệu trường này có tham chiếu đến bất kỳ biến Blockly nào hay không. Nếu đúng, bạn có thể cần xử lý theo cách khác trong quá trình chuyển đổi tuần tự và huỷ chuyển đổi tuần tự. Các lớp con có thể ghi đè thuộc tính này. | |
refreshVariableName() | Làm mới tên biến được tham chiếu bởi trường này nếu trường này tham chiếu đến các biến. | |
render_() | protected |
Được getSize() sử dụng để di chuyển/thay đổi kích thước của bất kỳ phần tử DOM nào và nhận kích thước mới. Tất cả hoạt động kết xuất ảnh hưởng đến kích thước/hình dạng của khối phải được thực hiện tại đây và được kích hoạt bằng getSize(). |
repositionForWindowResize() | Một trình bổ trợ dành cho nhà phát triển để định vị lại WidgetDiv trong quá trình đổi kích thước cửa sổ. Bạn cần xác định trình bổ trợ này nếu trường của bạn có WidgetDiv cần tự định vị lại khi cửa sổ được đổi kích thước. Ví dụ: các trường nhập văn bản xác định trình bổ trợ này để WidgetDiv đầu vào có thể tự định vị lại trong sự kiện đổi kích thước cửa sổ. Điều này đặc biệt quan trọng khi các phương thức nhập theo phương thức đã bị tắt, vì các thiết bị Android sẽ kích hoạt sự kiện đổi kích thước cửa sổ khi bàn phím mềm mở ra. Nếu bạn muốn WidgetDiv tự ẩn thay vì định vị lại, hãy trả về false. Đây là hành vi mặc định. DropdownDivs đã xử lý logic định vị của riêng chúng, vì vậy, bạn không cần ghi đè hàm này nếu trường của bạn chỉ có DropdownDiv. |
|
saveLegacyState(callingClass) | protected |
Trả về phiên bản chuỗi của trạng thái XML, nếu cần sử dụng. Nếu không, phương thức này sẽ trả về giá trị rỗng để báo hiệu trường phải sử dụng quá trình chuyển đổi tuần tự của riêng trường. |
saveState(_doFullSerialization) | Lưu giá trị của trường này dưới dạng một giá trị có thể chuyển đổi tuần tự sang JSON. Chỉ được hệ thống chuyển đổi tuần tự gọi. | |
setEnabled(enabled) | Đặt xem có thể thay đổi giá trị của trường này bằng trình chỉnh sửa khi khối nguồn có thể chỉnh sửa hay không. | |
setSourceBlock(block) | Đính kèm trường này vào một khối. | |
setTooltip(newTip) | Đặt chú giải công cụ cho trường này. | |
setValidator(handler) | Đặt hàm xác thực mới cho các trường có thể chỉnh sửa hoặc xoá trình xác thực đã đặt trước đó. Hàm trình xác thực sẽ lấy giá trị trường mới và trả về giá trị đã xác thực. Giá trị đã xác thực có thể là giá trị đầu vào, phiên bản sửa đổi của giá trị đầu vào hoặc giá trị rỗng để huỷ thay đổi. Nếu hàm không trả về giá trị nào (hoặc trả về giá trị không xác định), thì giá trị mới sẽ được chấp nhận là hợp lệ. Điều này cho phép các trường sử dụng hàm đã xác thực làm thông báo sự kiện thay đổi ở cấp trường. |
|
setValue(newValue, fireChangeEvent) | Dùng để thay đổi giá trị của trường. Xử lý việc xác thực và sự kiện. Các lớp con nên ghi đè doClassValidation_ và doValueUpdate_ thay vì phương thức này. | |
showEditor_(_e) | protected |
Một trình bổ trợ dành cho nhà phát triển để tạo trình chỉnh sửa cho trường. Theo mặc định, thuộc tính này không hoạt động và phải được ghi đè để tạo trình chỉnh sửa. |
toXml(fieldElement) | Chuyển giá trị của trường này sang XML. Chỉ được Blockly.Xml gọi. | |
updateEditable() | Thêm hoặc xoá giao diện người dùng cho biết trường này có thể chỉnh sửa hay không. | |
updateSize_(margin) | protected |
Cập nhật kích thước của trường dựa trên văn bản. |