blockly > Pole

Klasa pola

Klasa abstrakcyjna dla pola z możliwością edycji.

Podpis:

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

Implementacje: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Zespoły

Zespół Modyfikatory Opis
(konstruktor)(wartość, walidator, konfiguracja) Tworzy nową instancję klasy Field

Właściwości

Właściwość Modyfikatory Typ Opis
borderRect_ protected SVGRectElement | wartość null Element obramowania SVG wyrenderowanego pola.
clickTarget_ protected Element | wartość null Element, z którym jest powiązany moduł obsługi kliknięć.
constants_ protected ConstantProvider | wartość null Stałe powiązane z mechanizmem renderowania bloku źródłowego.
Kursor ciąg znaków Styl kursora myszy na obszarze interaktywnym, który uruchamia edytor.
DEFAULT_VALUE T | wartość null

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

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

MOŻLIWOŚĆ EDYTOWANIA wartość logiczna Pola, które można edytować, zazwyczaj mają interfejs, który wskazuje, że można je edytować. Zostaną one również zapisane przez serializator.
enabled_ protected wartość logiczna Czy wartość pola można zmienić za pomocą edytora na edytowalnym bloku?
fieldGroup_ protected SVGGElement | wartość 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. Unikalny w ramach każdego bloku. Etykiety statyczne zazwyczaj nie mają nazwy.
NBSP

static

readonly

(nie zadeklarowano) Spacja nierozdzielająca.
SERIALIZACJA wartość logiczna Pola możliwe do serializacji są zapisywane przez serializator, a pola nieserializacyjne nie. Pola edytowalne powinny być też serializowalne. Domyślnie tak nie jest, dlatego funkcja SERIALIZABLE jest zgodna wstecznie.
size_ protected Rozmiar
SKIP_SETUP

static

readonly

unikalny symbol Wartość używana do sygnalizowania, że konstruktor pola *nie* powinien ustawiać wartości pola ani uruchamiać konfiguracji setup_ i powinna zezwalać na to podklasie.
sourceBlock_ protected Zablokuj | wartość null Zablokuj to pole, z którym jest dołączone. Adres zaczyna się od wartości null, a następnie jest ustawiany jako init.
textContent_ protected Tekst | wartość null Element treści tekstowej wyrenderowanego pola.
textElement_ protected SVGTextElement | wartość null Element tekstowy SVG wyrenderowanego pola.
validator_ protected FieldValidator&lt;T&gt; | wartość null Funkcja weryfikacji jest wywoływana, gdy użytkownik edytuje pole, które można edytować.
value_ protected T | wartość null
visible_ protected wartość logiczna Czy pole jest widoczne czy ukryte z powodu zwinięcia bloku?

Metody

Metoda Modyfikatory Opis
applyColour()

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

Można go stosować w podklasach innych niż abstrakcyjne, jeśli kolor pola zależy od koloru bryły. Jest ona automatycznie wywoływana w odpowiednich momentach, na przykład po zmianie nadrzędnego bloku lub mechanizmu renderowania.

Więcej informacji znajdziesz w dokumentacji pól lub w polu FieldDropdown (przykład).

bindEvents_() protected Powiąż zdarzenia z polem. Można ją zastąpić przez podklasy, jeśli potrzebują niestandardowej obsługi danych wejściowych.
configure_(config) protected Przetwórz mapę konfiguracji przekazaną do pola.
createBorderRect_() protected Utwórz element prostokątny obramowania. Nie należy zastępować przez podklasy. Zamiast tego zmodyfikuj wynik tej funkcji w initView lub utwórz osobną funkcję do wywołania.
createTextElement_() protected Utwórz element tekstowy pola. Nie należy zastępować przez podklasy. Zamiast tego zmodyfikuj wynik tej funkcji w initView lub utwórz osobną funkcję do wywołania.
doClassValidation_(newValue) protected

Sprawdź zmiany wartości pola przed ich określeniem. Przykład implementacji podklasy znajdziesz w **FieldDropdown**.

**UWAGA:** weryfikacja zwraca 1 opcję między T, null i undefined. Implementacja **pola** nigdy nie zwraca wartości undefined, ale podklasa może zwracać wartość undefined, jeśli nowa wartość jest zgodna z funkcją T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Służy do powiadamiania pola o wprowadzeniu nieprawidłowej wartości. Można ją zastępować przez podklasy – patrz FieldTextInput. Domyślnie brak działania.
doValueUpdate_(newValue) protected Służy do aktualizowania wartości pola. Może być zastępowana przez podklasy w celu niestandardowego przechowywania wartości lub aktualizowania elementów zewnętrznych.
fromJson(_options) static

W podklasach należy ponownie wdrożyć tę metodę, aby utworzyć podklasę Field na podstawie obiektu argumentu JSON.

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

getAbsoluteXY_() protected Zwraca współrzędne bezwzględne lewego górnego rogu tego pola. Punkt początkowy (0,0) to lewy górny róg treści strony.
getBorderRect() protected Pobiera element prostokąta obramowania.
getClickTarget_() protected Element, z którym ma być powiązany moduł obsługi kliknięcia. Jeśli nie zostanie ustawiony bezpośrednio, domyślnie będzie używany główny element SVG pola. Gdy klikniesz ten element w polu, które można edytować, otworzy się edytor.
getConstants() Pobierz dostawcę stałej mechanizmu renderowania.
getDisplayText_() protected Pobierz z tego pola tekst do wyświetlenia na bryle. Może różnić się od getText ze względu na wielokropek i inne formatowanie.
getFlipRtl() Zwraca, czy należy odwrócić pole w zapisie od prawej do lewej.
getSize()

Zwraca wysokość i szerokość pola.

*Ogólnie* powinno to być jedyne miejsce, z którego wywoływane jest renderowanie_.

getSourceBlock() Pobierz blok, do którego jest dołączone to pole.
getSvgRoot() Pobiera element grupy dla tego pola z możliwością edycji. Służy do pomiaru rozmiaru i pozycjonowania.
getText_() protected Element przykuwający uwagę programisty do zastąpienia zwracanego tekstu w tym polu. Zastąp, jeśli tekstowa reprezentacja wartości tego pola nie jest tylko ciągiem znaków jej wartości. Zwróć wartość null, aby ośrodek używać rzutowania ciągu znaków.
getText() Skopiuj tekst z tego pola. Zastąp getText_, by uzyskać inne działanie niż zwykłe przesyłanie wartości do ciągu znaków.
getTextContent() protected Pobiera zawartość tekstową.
getTextElement() protected Pobiera element tekstowy.
getTooltip() Zwraca tekst etykietki dla tego pola.
getValidator() Pobiera funkcję weryfikacji w przypadku pól do edycji lub wartość null, jeśli nie jest ustawiona.
getValue() Pobierz aktualną wartość pola.
initModel() Inicjuje model pola po jego zainstalowaniu w bloku. Domyślnie brak działania.
initView() protected Utwórz UI blokowania dla tego pola.
isClickable() Sprawdź, czy to pole definiuje funkcję showEditor_.
isClickableInFlyout(autoClosingFlyout) Sprawdź, czy pole powinno być klikalne, gdy bryła znajduje się w rozwiniętym menu. Domyślnie pola są klikalne w zawsze otwartych okienkach, na przykład w prostym narzędziu, ale nie w automatycznie zamykanych arkuszach, takich jak przybory kategorii. Podklasy mogą zastąpić tę funkcję, aby zmienić to zachowanie. Pamiętaj, że aby ta zmiana przyniosła skutek, isClickable musi też zwrócić wartość „prawda”.
isCurrentlyEditable() Sprawdź, czy to pole można obecnie edytować. Niektórych pól nie można edytować (np. etykiet tekstowych). Inne pola mogą mieć wartość EDITABLE, ale mogą znajdować się w nieedytowalnych blokach lub być obecnie wyłączone.
isEnabled() Sprawdź, czy wartość tego pola można zmienić za pomocą edytora, gdy blok źródłowy jest możliwy do edycji.
isFullBlockField() protected

Określa, czy to pole powinno zajmować pełny blok.

Zachowaj ostrożność przy zastępowaniu tej funkcji. Może ona nie działać zgodnie z oczekiwaniami, ponieważ zachowanie zostało zhakowane. Jeśli chcesz zastąpić tę funkcję, opublikuj na forum opis swojego zamierzonego działania, aby sprawdzić, czy jest inne podejście.

isSerializable() Sprawdź, czy to pole powinno być serializowane przez mechanizm renderowania XML. Obsługa logiki zgodności wstecznej i stanów niespójnych.
isTabNavigable() Wskazuje, czy po polu można poruszać się po karcie.
isVisible() Wskazuje, czy to pole z możliwością edycji jest widoczne.
loadLegacyState(callingClass, state) Wczytuje podany stan za pomocą starych haków XML, jeśli powinny być używane. Zwraca wartość „true” (prawda), aby potwierdzić, że wczytywanie zostało ukończone. W przeciwnym razie zwraca wartość „false” (fałsz).
onLocationChange(_) Informuje pole o zmianie lokalizacji.
onMouseDown_(e) protected Obsługa zdarzenia wskaźnika w polu.
onShortcut(_shortcut) Obsługuje podany skrót klawiszowy.
positionBorderRect_() protected Pozycja prostokąta obramowania pola po zmianie rozmiaru.
positionTextElement_(xOffset, contentSzerokość) protected Pozycja elementu tekstowego pola po zmianie rozmiaru. Dotyczy to zarówno pozycjonowania od prawej do lewej, jak i od lewej do prawej.
render_() protected

Używana przez getSize() do przenoszenia/zmiany rozmiaru elementów DOM i uzyskania nowego rozmiaru.

Tutaj należy wykonywać wszystkie renderowanie, które wpływają na rozmiar/kształt bloku, i powinny być aktywowane przez metodę getSize().

repositionForWindowResize()

Interfejs programisty umożliwiający zmianę pozycji obiektu WidgetDiv podczas zmiany rozmiaru okna. Musisz zdefiniować ten punkt zaczepienia, jeśli pole zawiera obiekt WidgetDiv, który musi zmieniać swoje położenie po zmianie rozmiaru okna. Na przykład pola do wprowadzania tekstu definiują ten punkt zaczepienia, dzięki czemu obiekt WidgetDiv może zmieniać swoje położenie po zdarzeniu zmiany rozmiaru okna. Jest to szczególnie ważne, gdy wejścia modalne są wyłączone, ponieważ urządzenia z Androidem będą uruchamiać zdarzenie zmiany rozmiaru okna po otwarciu klawiatury programowej.

Jeśli chcesz, aby obiekt WidgetDiv się ukrywał zamiast zmieniać jego położenie, ustaw wartość false (fałsz). Jest to jego ustawienie domyślne.

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

saveLegacyState(callingClass) protected Zwraca ciąg znaków stanu XML, jeśli powinien być używany. W przeciwnym razie zwraca wartość null, aby zasygnalizować, że pole powinno użyć własnej serializacji.
setEnabled(enabled) Określ, czy wartość tego pola można zmieniać za pomocą edytora, gdy blok źródłowy jest możliwy do edycji.
setSourceBlock(block) Dołącz to pole do bryły.
setTooltip(newTip) Ustawia etykietkę dla tego pola.
setValidator(handler)

Ustawia nową funkcję weryfikacji dla pól możliwych do edytowania lub usuwa wcześniej ustawiony walidator.

Funkcja walidatora pobiera nową wartość pola i zwraca zweryfikowaną wartość. Zweryfikowaną wartością może być wartość wejściowa, zmodyfikowana wersja wartości wejściowej lub wartość null oznaczająca przerwanie zmiany.

Jeśli funkcja nie zwróci niczego (lub zwraca nieokreśloną wartość), nowa wartość jest akceptowana jako prawidłowa. Umożliwia to korzystanie z pól, które korzystają ze zweryfikowanej funkcji jako powiadomienia o zmianie na poziomie pola.

setValue(newValue, fireChangeEvent) Umożliwia zmianę wartości w polu. Obsługuje weryfikację i zdarzenia. Zamiast tej metody powinny być zastępowane podklasy doClassValidation_ i doValueUpdate_.
showEditor_(_e) protected Interfejs dewelopera do utworzenia edytora pola. Domyślnie nie jest to działanie i trzeba zmienić to ustawienie, aby utworzyć edytor.
updateEditable() Dodaj lub usuń interfejs wskazujący, czy to pole można edytować.
updateSize_(margin) protected Zmienia rozmiar pola na podstawie tekstu.