KnockoutJS - deklaratywne powiązania

Deklaratywne wiązanie w KnockoutJS zapewnia potężny sposób łączenia danych z interfejsem użytkownika.

Ważne jest, aby zrozumieć związek między powiązaniami a obserwowalnymi. Technicznie rzecz biorąc, te dwa są różne. Możesz użyć normalnego obiektu JavaScript, ponieważ ViewModel i KnockoutJS mogą poprawnie przetwarzać powiązanie widoku.

Bez Observable właściwość z interfejsu użytkownika zostanie przetworzona tylko po raz pierwszy. W takim przypadku nie może aktualizować się automatycznie na podstawie podstawowej aktualizacji danych. Aby to osiągnąć, powiązania muszą odnosić się do obserwowalnych właściwości.

Składnia powiązań

Oprawa składa się z 2 elementów, oprawy name i value. Oto prosty przykład -

Today is : <span data-bind = "text: whatDay"></span>

Tutaj tekst jest nazwą powiązania, a whatDay jest wartością powiązania. Możesz mieć wiele powiązań oddzielonych przecinkami, jak pokazano w poniższej składni.

Your name: <input data-bind = "value: yourName, valueUpdate: 'afterkeydown'" />

Tutaj wartość jest aktualizowana po każdym naciśnięciu klawisza.

Wiążące wartości

Wartość powiązania może mieć postać single value, literal, a variable lub może być JavaScriptwyrażenie. Jeśli powiązanie odwołuje się do jakiegoś nieprawidłowego wyrażenia lub odwołania, KO wygeneruje błąd i przestanie przetwarzać powiązanie.

Poniżej znajduje się kilka przykładów powiązań.

<!-- simple text binding -->
<p>Enter employee name: <input   -bind = 'value: empName' /></p>

<!-- click binding, call a specific function -->
<button data-bind="click: sortEmpArray">Sort Array</button>

<!-- options binding -->
<select multiple = "true" size = "8" data-bind = "options: empArray , 
   selectedOptions: chosenItem"> </select>

Zwróć uwagę na następujące punkty -

  • Spacje nie mają znaczenia.

  • Począwszy od KO 3.0, możesz pominąć wartość wiązania, która da wiązaniu niezdefiniowaną wartość.

Wiążący kontekst

Do danych, które są używane w bieżących powiązaniach, może się odwoływać obiekt. Ten obiekt nazywa siębinding context.

Hierarchia kontekstów jest tworzona i zarządzana automatycznie przez KnockoutJS. Poniższa tabela zawiera listę różnych typów kontekstów powiązań dostarczonych przez KO.

Sr.No. Wiążące typy kontekstu i opis
1

$root

To zawsze odnosi się do ViewModel najwyższego poziomu. Umożliwia to dostęp do metod najwyższego poziomu do manipulowania ViewModel. Zwykle jest to obiekt, który jest przekazywany do ko.applyBindings.

2

$data

Ta nieruchomość jest bardzo podobna thissłowo kluczowe w obiekcie Javascript. Właściwość $ data w kontekście powiązania odwołuje się do obiektu ViewModel dla bieżącego kontekstu.

3

$index

Ta właściwość zawiera indeks bieżącego elementu tablicy wewnątrz pętli foreach. Wartość indeksu $ zmieni się automatycznie, gdy i po zaktualizowaniu podstawowej tablicy Observable. Oczywiście ten kontekst jest dostępny tylko dlaforeach wiązania.

4

$parent

Ta właściwość odnosi się do nadrzędnego obiektu ViewModel. Jest to przydatne, gdy chcesz uzyskać dostęp do zewnętrznych właściwości ViewModel z wnętrza zagnieżdżonej pętli.

5

$parentContext

Wywoływany jest obiekt kontekstu, który jest powiązany na poziomie nadrzędnym $parentContext. To różni się od$parent. $ rodzic odnosi się do danych. Natomiast $ parentContext odnosi się do kontekstu wiązania. Np. Może zajść potrzeba uzyskania dostępu do indeksu zewnętrznego dla każdego elementu z wewnętrznego kontekstu.

6

$rawdata

Ten kontekst zawiera surową wartość ViewModel w bieżącej sytuacji. To przypomina $ data, ale różnica polega na tym, że jeśli ViewModel jest opakowany w Observable, to $ data zostaje po prostu rozpakowany. ViewModel i $ rawdata stają się rzeczywistymi obserwowalnymi danymi.

7

$component

Ten kontekst służy do odwoływania się do ViewModel tego składnika, gdy znajdujesz się wewnątrz określonego składnika. Np. Możesz chcieć uzyskać dostęp do niektórych właściwości z ViewModel zamiast do bieżących danych w sekcji szablonu komponentu.

8

$componentTemplateNodes

Reprezentuje tablicę węzłów DOM przekazanych do tego konkretnego komponentu, gdy znajdujesz się w określonym szablonie komponentów.

Poniższe terminy są również dostępne w wiążącym kontekście, ale w rzeczywistości nie są wiążące.

  • $context - To nic innego jak istniejący obiekt kontekstu powiązania.

  • $element - Ten obiekt odnosi się do elementu w DOM w bieżącym powiązaniu.

Praca z tekstem i wyglądami

Poniżej znajduje się lista typów oprawy dostarczonych przez KO do obsługi tekstu i wyglądu.

Sr.No. Typ i użycie wiązania
1 widoczne:

Aby pokazać lub ukryć element HTML DOM w zależności od określonych warunków.

2 text:

Aby ustawić zawartość elementu HTML DOM.

3 html:

Aby ustawić zawartość znaczników HTML elementu DOM.

4 css:

Aby zastosować klasy CSS do elementu.

5 style:

Definiowanie atrybutu stylu wbudowanego elementu.

6 attr:

Dynamiczne dodawanie atrybutów do elementu.

Praca z powiązaniami przepływu sterowania

Poniżej znajduje się lista typów powiązań przepływu sterowania dostarczonych przez KO.

Sr.No. Typ i użycie wiązania
1 foreach:

W tym powiązaniu do każdego elementu tablicy odwołuje się w pętli znacznik HTML.

2 if:

Jeśli warunek jest spełniony, to dany znacznik HTML zostanie przetworzony. W przeciwnym razie zostanie usunięty z DOM.

3 ifnot:

Negacja If. Jeśli warunek jest spełniony, to dany znacznik HTML zostanie przetworzony. W przeciwnym razie zostanie usunięty z DOM.

4 z:

To powiązanie służy do wiązania elementów podrzędnych obiektu w kontekście określonego obiektu.

5 komponent: LUB komponent:

To powiązanie służy do wstawiania komponentu do elementów DOM i opcjonalnego przekazywania parametrów.

Praca z powiązaniami pól formularza

Poniżej znajduje się lista typów powiązań pól formularza dostarczona przez KO.

Sr.No. Typ i użycie wiązania
1 kliknij:

To powiązanie służy do wywoływania funkcji JavaScript skojarzonej z elementem DOM na podstawie kliknięcia.

2 zdarzenie:

To powiązanie służy do nasłuchiwania określonych zdarzeń DOM i wywoływania powiązanych z nimi funkcji obsługi na ich podstawie.

3 przesłać:

To powiązanie służy do wywoływania funkcji JavaScript po przesłaniu skojarzonego elementu DOM.

4 enable:

To powiązanie służy do włączania niektórych elementów DOM na podstawie określonego warunku.

5 disable:

To powiązanie wyłącza powiązany element DOM, gdy wartość parametru ma wartość true.

6 wartość:

To powiązanie służy do łączenia wartości odpowiedniego elementu DOM z właściwością ViewModel.

7 textInput:

To powiązanie służy do tworzenia dwukierunkowego wiązania między polem tekstowym lub obszarem tekstowym a właściwością ViewModel.

8 hasFocus:

To powiązanie służy do ręcznego ustawiania fokusu elementu HTML DOM za pomocą właściwości ViewModel.

9 zaznaczone:

To powiązanie służy do tworzenia łącza między kontrolowanym elementem formularza a właściwością ViewModel.

10 opcje:

To powiązanie służy do definiowania opcji dla wybranego elementu.

11 selectedOptions:

To powiązanie służy do pracy z elementami, które są aktualnie wybrane w kontrolce formularza wyboru wielu list.

12 uniqueName:

To powiązanie służy do generowania unikalnej nazwy dla elementu DOM.