Knockout-Einführung
Knockout, auch bekannt als ko, ist eine leichtgewichtige Javascript-Klassenbibliothek, die das MVVM-Entwurfsmuster (d. h. Model, View, ViewModel) verwendet, um einfach und elegant bidirektionale Bindung und Echtzeitaktualisierungen zu implementieren und Ihnen so eine saubere Nutzung zu ermöglichen Datenmodell zur Erstellung umfangreicher, reaktionsfähiger Benutzeroberflächen.
Knockout verfügt über drei Kernfunktionen:
1. Elegante Abhängigkeitsverfolgung: Jedes Mal, wenn sich das Datenmodell ändert, wird der entsprechende UI-Teil automatisch aktualisiert
3. Trivial erweiterbar: Es sind nur wenige Codezeilen erforderlich, um ein benutzerdefiniertes Verhalten als deklarative Bindung zu implementieren
1. Reiner Javascript-Code;
Einfaches Beispiel
There are <span data-bind="text: myItems().length"></span> items
<button data-bind="enable: myItems().length < 5">Add</button>
Bindungskontext
Bindungskontext ist ein Objekt, das Daten enthält, auf die Sie in Ihren Bindungen verweisen können. Knockout erstellt und verwaltet automatisch Vererbungsbeziehungen für Bindungskontexte, wenn Bindungen angewendet werden. Der Stamm dieser Hierarchie bezieht sich auf den von Ihnen angegebenen viewModel-Parameter (ko.applyBindings(viewModel)).
$parent
<h1 data-bind="text: name"></h1> <div data-bind="with: manager"> <!-- Now we're inside a nested binding context --> <span data-bind="text: name"></span> is the manager of <span data-bind="text: $parent.name"></span> </div>
Dies ist ein Array, das alle Ansichtsmodelle des übergeordneten Knotens darstellt
$parent[1]: stellt den Großelternknoten dar;
$parent[1]: stellt den Urgroßvaterknoten dar;
.....und so weiter
$root
$component
$data
$data ist beispielsweise sehr nützlich, wenn Sie auf das ViewModel selbst und nicht auf die Eigenschaften des ViewModels verweisen möchten.
Es ist der 0-basierte Indexeintrag des Arrays in der foreach-Bindung. Im Gegensatz zu anderen Kontextattributen ist $index beobachtbar, das heißt, es wird aktualisiert, wenn das Array-Element aktualisiert wird.
<ul data-bind="foreach: ['cats', 'dogs', 'fish']"> <li>The value is <span data-bind="text: $data"></span></li> </ul> $index(仅在foreach binding中可用)
$rowData