blockly > Field

Klasa pola

Klasa abstrakcyjna dla pola edytowalnego.

Podpis:

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

Implements: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode

Zespoły

Zespół Modyfikatory Opis
(konstruktor)(value, validator, config) Tworzy nową instancję klasy Field.

Właściwości

Właściwość Modyfikatory Typ Opis
borderRect_ protected SVGRectElement | null Element obramowania SVG wyrenderowanego pola.
clickTarget_ protected Element | null Element, do którego jest powiązany moduł obsługi kliknięcia.
constants_ protected ConstantProvider | null Stałe związane z renderowaniem bloku źródłowego.
DEFAULT_VALUE T | null

Aby zastąpić wartość domyślną ustawioną w polu **Field**, zaktualizuj bezpośrednio prototyp.

Przykład: FieldImage.prototype.DEFAULT_VALUE = null;

EDYTOWALNE wartość logiczna Pola, które można edytować, zwykle mają interfejs wskazujący, że można je edytować. Będą one też zapisywane przez serializator.
enabled_ protected wartość logiczna Czy wartość pola można zmienić za pomocą edytora w bloku umożliwiającym edycję?
fieldGroup_ protected SVGGElement | null Element grupy SVG wyrenderowanego pola.
isDirty_ protected wartość logiczna Czy ten blok wymaga ponownego renderowania?
maxDisplayLength liczba Maksymalna liczba znaków tekstu do wyświetlenia przed dodaniem wielokropka.
name ciąg znaków (Opcjonalnie) nazwa pola. niepowtarzalna w ramach każdego bloku; Etykiety statyczne zwykle nie mają nazw.
NBSP

static

readonly

(niedeklarowane) Spacja niełamiąca.
SERIALIZABLE wartość logiczna Pola serializowane są zapisywane przez serializator, a pola nieserializowane nie są. Pola, które można edytować, powinny też być możliwe do serializacji. Domyślnie tak nie jest, aby zapewnić zgodność wsteczną interfejsu SERIALIZABLE.
size_ protected Rozmiar Pobiera rozmiar tego pola. Funkcja getSize() i updateSize() mają efekty uboczne, więc ta funkcja działa jako element pośredni dla podklas, które chcą dostosować granice pola podczas ustawiania lub pobierania rozmiaru bez wywoływania niepożądanego renderowania lub innych efektów ubocznych. Pamiętaj, że podklasy muszą zastąpić *obie* metody get i set, jeśli któraś z nich jest zastępowana. Implementacja może wywołać bezpośrednio metodę super, ale musi ona istnieć zgodnie ze specyfikacją JS.
SKIP_SETUP

static

readonly

unikalny symbol Wartość sygnalizująca, kiedy konstruktor pola *nie* powinien ustawiać wartości pola ani uruchamiać metody configure_, a zamiast tego powinien zezwolić na wykonanie tych czynności podklasie.
sourceBlock_ protected Block | null Blokada jest dołączona do tego pola. Na początku jest nullem, a potem ustawiany w init.
textContent_ protected Tekst | pusty Element treści tekstowej wyrenderowanego pola.
textElement_ protected SVGTextElement | null Wyrenderowany element tekstowy SVG pola.
validator_ protected FieldValidator<T> | null Funkcja walidacji wywoływana, gdy użytkownik edytuje pole edytowalne.
value_ protected T | null
visible_ protected wartość logiczna Czy pole jest widoczne, czy ukryte z powodu zwiniętego bloku?

Metody

Metoda Modyfikatory Opis
applyColour()

Aktualizuje pole, aby pasowało do koloru lub stylu bloku.

Podklasy nieabstrakcyjne mogą to zaimplementować, jeśli kolor pola zależy od koloru bloku. Będzie ona wywoływana automatycznie w odpowiednich momentach, np. gdy zmieni się blok nadrzędny lub procesor.

Aby dowiedzieć się więcej, zapoznaj się z dokumentacją pola lub przykładem pola FieldDropdown.

bindEvents_() protected Powiązanie zdarzeń z polem. Może być zastąpiony przez podklasy, jeśli te potrzebują obsługi niestandardowych danych wejściowych.
canBeFocused() Zobacz IFocusableNode.canBeFocused.
configure_(config) protected Przetwarzanie mapy konfiguracji przekazanej do pola.
createBorderRect_() protected Utwórz element prostokątny obramowania pola. nie może być zastąpiony przez podklasy. Zamiast tego zmodyfikuj wynik funkcji w initView lub utwórz osobną funkcję do wywołania.
createTextElement_() protected Utwórz element tekstowy pola. nie może być zastąpiony przez podklasy. Zamiast tego zmodyfikuj wynik funkcji w initView lub utwórz osobną funkcję do wywołania.
dispose() Usuń wszystkie obiekty i zdarzenia DOM należące do tego edytowalne pola.
doClassValidation_(newValue) protected

Sprawdzanie zmian wartości pola przed ich zastosowaniem. Przykład implementacji podklasy znajdziesz w sekcji **FieldDropdown**.

**UWAGA:** funkcja Validation zwraca jedną z opcji: T, null lub undefined. Implementacja pola **Field** nigdy nie zwróci wartości undefined, ale podklasa może zwrócić wartość undefined, jeśli nowa wartość jest zgodna z wartością T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Służy do powiadamiania pola o nieprawidłowej wartości. Może być zastąpiony przez podklasy (patrz FieldTextInput). Domyślnie nieaktywna.
doValueUpdate_(newValue) protected Służy do aktualizowania wartości pola. Może być zastąpiony przez podklasy, aby umożliwić niestandardowe przechowywanie wartości lub aktualizowanie zewnętrznych obiektów.
forceRerender() Wymusić ponowne renderowanie bloku, w którym jest zainstalowane to pole. Spowoduje to ponowne renderowanie tego pola i dostosowanie go do wszelkich zmian rozmiaru. Inne pola w tym samym bloku nie zostaną ponownie wyrenderowane, ponieważ ich rozmiary zostały już zapisane.
fromJson(_options) static

Podklasy powinny ponownie zaimplementować tę metodę, aby utworzyć podklasę Field na podstawie obiektu argumentu JSON.

Próba zarejestrowania podklasy pola w FieldRegistry jest błędna, jeśli ta podklasa nie zastąpiła tej metody.

fromXml(fieldElement) Ustawia wartość pola na podstawie podanego elementu XML. Powinien być wywoływany tylko przez Blockly.Xml.
getAbsoluteXY_() protected Zwraca bezwzględne współrzędne lewego górnego rogu tego pola. Punkt początkowy (0,0) to lewy górny róg korpusu strony.
getBorderRect() protected Pobiera element prostokątny obramowania.
getClickTarget_() protected Element, do którego ma być przypisany element obsługi kliknięcia. Jeśli nie zostanie ustawiony wprost, domyślnie będzie to element grafu SVG. Po kliknięciu tego elementu w polu, które można edytować, otworzy się edytor.
getConstants() Pobierz dostawcę stałych danych dla renderowania.
getDisplayText_() protected Tekst z tego pola będzie wyświetlany na bloku. Może się różnić od getText ze względu na wielokropek i inne formatowanie.
getFlipRtl() Zwraca informację, czy pole ma być odwrócone w języku arabskim.
getFocusableElement() Zobacz IFocusableNode.getFocusableElement.
getFocusableTree() Zobacz IFocusableNode.getFocusableTree.
getSize()

Zwraca wysokość i szerokość pola.

Zazwyczaj powinno to być jedyne miejsce, z którego wywoływana jest funkcja render_.

getSourceBlock() Pobierz blok, do którego jest dołączone to pole.
getSvgRoot() Pobiera element grupy dla tego edytowalne pola. Służy do pomiaru rozmiaru i pozycjonowania.
getText_() protected Element hook dla deweloperów umożliwiający zastąpienie zwróconego tekstu w tym polu. Zastąp, jeśli reprezentacja tekstowa wartości tego pola nie jest tylko ciągiem znaków. Zwracanie wartości null, aby zmusić do rzutowania na ciąg znaków.
getText() Pobierz tekst z tego pola. Zastąp getText_, aby uzyskać inne działanie niż proste zastąpienie wartości ciągiem znaków.
getTextContent() protected Pobiera zawartość tekstową.
getTextElement() protected Pobiera element tekstowy.
getTooltip() Zwraca tekst etykietki tego pola.
getValidator() Pobiera funkcję walidacji dla pól edytowalnych lub null, jeśli pole nie jest ustawione.
getValue() Pobiera bieżącą wartość pola.
initModel() Inicjowanie modelu pola po zainstalowaniu go w bloku. Domyślnie nieaktywna.
initView() protected Utwórz interfejs bloku dla tego pola.
isClickable() Sprawdź, czy to pole definiuje funkcję showEditor_.
isClickableInFlyout(autoClosingFlyout) Sprawdź, czy pole powinno być klikalne, gdy blok jest w wysuniętym menu. Domyślnie pola są klikalne w wyskakujących menu, które są zawsze otwarte, takich jak proste menu narzędzi, ale nie w wyskakujących menu, które zamykają się automatycznie, takich jak menu narzędzi kategorii. Podklasy mogą zastąpić tę funkcję, aby zmienić to zachowanie. Pamiętaj, że funkcja isClickable musi zwracać wartość true, aby to działanie miało jakikolwiek wpływ.
isCurrentlyEditable() Sprawdź, czy to pole jest obecnie możliwe do edycji. Niektóre pola nigdy nie są EDYTOWALNE (np. etykiety tekstowe). Inne pola mogą być EDYTOWALNE, ale mogą występować w blokach, których nie można edytować, lub mogą być obecnie wyłączone.
isEnabled() Sprawdź, czy wartość tego pola można zmienić za pomocą edytora, gdy blok źródłowy jest edytowalny.
isSerializable() Sprawdź, czy to pole powinno być serializowane przez moduł renderowania XML. Obsługuje logikę zgodności wstecznej i stanów niezgodnych.
isVisible() Określa, czy to edytowalne pole jest widoczne.
loadLegacyState(callingClass, state) Ładuje dany stan za pomocą starych elementów sterujących XML (jeśli mają być używane). Zwraca wartość „true”, aby wskazać, że wczytywanie zostało obsłużone. W przeciwnym razie zwraca wartość „false”.
loadState(state) Ustawia stan pola na podstawie podanej wartości. Powinien być wywoływany tylko przez system serializacji.
onLocationChange(_) Informuje pole o tym, że zmieniło lokalizację.
onMouseDown_(e) protected Obsługa zdarzenia pointerdown w polu.
onNodeBlur() Zobacz IFocusableNode.onNodeBlur.
onNodeFocus() Zobacz IFocusableNode.onNodeFocus.
onShortcut(_shortcut) Obsługuje dany skrót klawiszowy.
positionBorderRect_() protected Umieszczenie prostokąta obramowania pola po zmianie rozmiaru.
positionTextElement_(xOffset, contentWidth) protected Umieszczenie elementu tekstowego pola po zmianie rozmiaru. Obsługuje to zarówno pozycjonowanie z lewej do prawej, jak i odwrotne.
referencesVariables() Określa, czy to pole odwołuje się do jakichkolwiek zmiennych Blockly. Jeśli wartość to prawda, może być konieczne inne przetwarzanie podczas serializacji i deserializacji. Podklasy mogą zastąpić te wartości.
refreshVariableName() Odśwież nazwę zmiennej, do której odwołuje się to pole, jeśli zawiera ono odwołania do zmiennych.
render_() protected

Funkcja getSize() służy do przemieszczania i zmieniania rozmiaru elementów DOM oraz do uzyskiwania ich nowego rozmiaru.

Tutaj należy wykonać wszystkie operacje renderowania, które mają wpływ na rozmiar lub kształt bloku. Należy je wywołać za pomocą metody getSize().

repositionForWindowResize()

Element wywołujący dla programistów, który umożliwia zmianę położenia WidgetDiv podczas zmiany rozmiaru okna. Musisz zdefiniować ten element, jeśli Twoje pole zawiera element WidgetDiv, który musi zmienić pozycję po zmianie rozmiaru okna. Na przykład pola tekstowe definiują ten element, aby element sterujący WidgetDiv mógł zmienić swoją pozycję po zdarzeniu zmiany rozmiaru okna. Jest to szczególnie ważne, gdy wyłączysz modalne dane wejściowe, ponieważ urządzenia z Androidem wywołują zdarzenie zmiany rozmiaru okna, gdy otwiera się wirtualna klawiatura.

Jeśli chcesz, aby element WidgetDiv się ukrył zamiast zmienić pozycję, zwracaj wartość false. Jest to zachowanie domyślne.

Elementy DropdownDivs mają już własną logikę pozycjonowania, więc nie musisz zastępować tej funkcji, jeśli Twoje pole ma tylko element DropdownDiv.

saveLegacyState(callingClass) protected Zwraca ciąg znaków z stanem XML, jeśli ma być użyty. W przeciwnym razie zwraca wartość null, aby zasygnalizować, że pole powinno używać własnej serializacji.
saveState(_doFullSerialization) Zapisuje wartość tego pola jako coś, co można zserializować do postaci JSON. Powinien być wywoływany tylko przez system serializacji.
setEnabled(enabled) Określ, czy wartość tego pola może być zmieniana za pomocą edytora, gdy blok źródłowy jest edytowalny.
setSourceBlock(block) Dołącz to pole do bloku.
setTooltip(newTip) Ustawia etykietę tego pola.
setValidator(handler)

Ustawia nową funkcję walidacji dla pól edytowalnych lub usuwa wcześniej ustawiony walidator.

Funkcja weryfikatora przyjmuje nową wartość pola i zwraca zweryfikowaną wartość. Wartość zweryfikowana może być wartością wejściową, zmodyfikowaną wersją wartości wejściowej lub wartością null, co spowoduje anulowanie zmiany.

Jeśli funkcja nie zwraca nic (lub zwraca wartość nieokreśloną), nowa wartość jest akceptowana jako prawidłowa. Ma to na celu umożliwienie używania pól z funkcjami zweryfikowanymi jako powiadomienia o zmianach na poziomie pola.

setValue(newValue, fireChangeEvent) Służy do zmiany wartości pola. Obsługuje walidację i zdarzenia. Podklasy powinny zastąpić metody doClassValidation_ i doValueUpdate_, a nie tę metodę.
showEditor_(_e) protected Element hook dla deweloperów umożliwiający utworzenie edytora dla tego pola. Domyślnie jest to wyłączone i aby utworzyć edytor, należy zastąpić to ustawienie.
toXml(fieldElement) Serializuje wartość tego pola do postaci XML. Powinien być wywoływany tylko przez Blockly.Xml.
updateEditable() Dodaj lub usuń interfejs wskazujący, czy to pole jest edytowalne.
updateSize_(margin) protected Zmienia rozmiar pola na podstawie tekstu.