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: |
|
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 |
|
(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 |
|
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: |
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. |