Knockout bietet eine ganze Reihe nützlicher integrierter Bindungen für die häufigsten Aufgaben und Szenarien. Jede dieser Bindungen ermöglicht es Ihnen, einfache Datenwerte zu binden oder JavaScript -Ausdrücke zu verwenden, um den entsprechenden Wert zu berechnen. Dies bietet viel Flexibilität und erleichtert es einfach, eine sehr dynamische Benutzeroberfläche mit minimalem Aufwand zu erstellen.
Die Syntax zur Verwendung der integrierten Bindungen besteht darin, den Knockout-Bindungsnamen und die Ansichtsmodelleigenschaftspaare in das Datenbindungsattribut eines HTML-Elements einzubeziehen.
// syntax: data-bind="bindingName: bindingProperty" <span data-bind="text: msg"></span>
Wenn Sie Daten im HTML -Element an mehr als eine Eigenschaft binden möchten, trennen Sie einfach die Bindungen durch ein Komma mit dieser Syntax:
<span data-bind="text: msg, visible: toggle"></span>
Sie sollten bedenken, dass die meisten Bindungen versuchen, einen Parameter in einen booleschen Wert umzuwandeln. Wenn Sie einen Wert angeben, der eigentlich nicht boolean ist, wird er lose als Wahrheit oder Falsy interpretiert. Dies bedeutet, dass Zahlen ungleich Null und Nicht-Null-Objekte und nicht leere Zeichenfolgen alle als wahr interpretiert werden, während Null-, Null-, undefinierte und leere Zeichenfolgen als falsch interpretiert werden.
Wenn Sie verstehen, wie eine Art von Datenbindung verwendet wird, sollten die anderen ziemlich leicht zu lernen sein. Jetzt werden wir jeden von ihnen erklären, indem wir eine Beschreibung und ein kurzes Beispiel angeben.
Wir haben bereits Textbindungen beim Umgang mit Observablen im vorherigen Tutorial gesehen. Es legt den Text des zugehörigen Elements auf den Wert Ihres Parameters fest. Dies ist das Äquivalent zum Einstellen der InnerText (für IE) oder TextContent (für andere Browser) des DOM -Elements. Wenn Ihr Parameter etwas anderes als eine Zahl oder eine Zeichenfolge ist, weist die Bindung dem Element die Ergebnisse von toString () zu.
.Wenn dieser Parameter ein beobachtbarer Wert ist, aktualisiert die Bindung den Text des Elements, wenn sich der Wert ändert. Wenn der Parameter nicht beobachtet werden kann, wird der Text des Elements nur einmal festgelegt und später nicht erneut aktualisiert. Dies gilt für alle Bindungen.
Die Textbindung wird häufig verwendet, um Werte in einer Spannweite oder einem Div -Element anzuzeigen. Wenn es verwendet wird, wird jeder frühere Text überschrieben.
// syntax: data-bind="bindingName: bindingProperty" <span data-bind="text: msg"></span>
Die Wertbindung legt den Wert des zugehörigen Elements zum Wert Ihres Parameters fest. Dies wird normalerweise für Formularelemente wie Eingabe, Auswahl und Textbereich verwendet. Wenn der Benutzer den Wert in der zugeordneten Formregelung bearbeitet, aktualisiert er den Wert in Ihrem Ansichtsmodell. Wenn Sie den Wert in Ihrem Ansichtsmodell aktualisieren, aktualisiert dies den Wert der Formularsteuerung auf dem Bildschirm. Dies ist als Zwei-Wege-Bindung bekannt. Wenn Ihr Parameter etwas anderes als eine Zahl oder eine Zeichenfolge ist, weist die Bindung dem Element die Ergebnisse von toString () zu.
standardmäßig aktualisiert Knockout Ihr Ansichtsmodell, wenn sich der Benutzer auf einen anderen DOM -Knoten auf das Änderungsereignis überträgt. Wenn Ihre Bindung auch einen Parameter namens ValueUpdate enthält, definiert dies, welcher Browser -Ereignis -Knockout zur Erkennung von Änderungen verwendet werden sollte.
"Änderung" ist das Standard -Ereignis und aktualisiert Ihr Ansichtsmodell, wenn der Benutzer den Fokus auf ein anderes Steuerelement oder bei
"AfterKeydown" - Aktualisiert Ihr Ansichtsmodell, sobald der Benutzer mit der Eingabe eines Zeichens beginnt. Dies funktioniert, indem es das Schlüsseldown -Ereignis des Browsers fängt und das Ereignis asynchron behandelt. Wenn Sie Ihr Ansichtsmodell in Echtzeit über "AfterKeydown" in Echtzeit aktualisieren möchten, ist dies die beste Wahl.
"KeyUp" - Aktualisiert Ihr Ansichtsmodell, wenn der Benutzer einen Schlüssel veröffentlichen
"Schlüsselpress" - Aktualisiert Ihr Ansichtsmodell, wenn der Benutzer einen Schlüssel eingegeben hat. Dies aktualisiert sich wiederholt, wenn der Benutzer einen Schlüssel nach unten hält
<span data-bind="text: msg, visible: toggle"></span>
Die HTML -Bindung wird nicht so oft verwendet, ist jedoch sehr praktisch, um HTML -Inhalte in Ihrem Ansichtsmodell zu rendern. Diese Bindung legt die HTML des zugehörigen Elements auf den Wert Ihres Parameters fest und entspricht der Einstellung der innerhtml -Eigenschaft im DOM -Element. Wenn Ihr Parameter etwas anderes als eine Zahl oder eine Zeichenfolge ist, weist die Bindung dem Element die Ergebnisse von toString () zu.
.
Da dieses Bindungsinhalt den Inhalt Ihres Elements mit InnerHTML festlegt, sollten Sie darauf achten, dass Sie ihn nicht mit nicht vertrauenswürdigen Modellwerten verwenden, da dies die Möglichkeit eines Skriptinjektionsangriffs eröffnen könnte. Wenn Sie nicht garantieren können, dass der Inhalt sicher angezeigt wird, können Sie stattdessen die Textbindung verwenden.// syntax: data-bind="bindingName: bindingProperty" <span data-bind="text: msg"></span>
Während Knockout viele eingebaute Bindungen hat, werden Sie sicherlich auf einige Situationen stoßen, für die es keine gibt. Für diese bietet Knockout die ATT -Bindung, mit der Sie Daten an eine Attribut an eine Ansichtsmodelleigenschaft binden können. Der Parameter sollte ein JavaScript -Objekt sein, bei dem die Eigenschaftsnamen die Attribute und die Eigenschaftswerte der Wert sind, der an das Attribut gebunden ist. Dies ist in vielen gemeinsamen Szenarien sehr nützlich, z.
<span data-bind="text: msg, visible: toggle"></span>
CSS -Bindung legt einen oder mehrere CSS -Klassen für das zugehörige Element fest. Der Parameter sollte ein JavaScript -Objekt sein, bei dem die Eigenschaftsnamen den gewünschten CSS -Klassen entsprechen und die Eigenschaftenwerte, die zu True oder False ausgewertet werden, angeben, ob die Klasse angewendet werden soll. Sie können mehrere CSS -Klassen gleichzeitig festlegen.
<p>The tip of the day is: <span data-bind="text: tipOfTheDay"></span></p> function viewModel() { var self = this; self.tipOfTheDay = ko.observable('Relax.Take it easy!') }; ko.applyBindings(new viewModel());
<input data-bind="value: name, valueUpdate: 'afterkeydown'"></input> <p data-bind="text: name"></p> function viewModel() { var self = this; self.name = ko.observable() }; ko.applyBindings(new viewModel());
<div data-bind="html: markup"></div> function viewModel() { var self = this; self.markup = ko.observable('<p><strong>Knockout</strong> is so <em>cool</em>!</p>') }; ko.applyBindings(new viewModel());
<img data-bind="attr: {src: url, alt: details}" /> function viewModel() { var self = this; self.url = ko.observable(images/logo.png) self.details = ko.observable('This is logo') }; ko.applyBindings(new viewModel());
<style> .colorize {color: red} </style> <p data-bind="css: { colorize: on }">Text</p> function viewModel() { var self = this; self.on = ko.observable(true) }; ko.applyBindings(new viewModel());
// syntax: data-bind="bindingName: bindingProperty" <span data-bind="text: msg"></span>
Senden -Bindung ist eine Abkürzung für die Behandlung des Submit -Ereignisses für das Formularelement. Wenn Sie die Sendel -Bindung in einem Formular verwenden, verhindert Knockout die Standardeinstellung des Browsers für dieses Formular. Mit anderen Worten, der Browser ruft Ihre Handler -Funktion auf, übermittelt das Formular jedoch nicht an den Server. Dies ist eine nützliche Standardeinstellung, da Sie das Formular bei der Verwendung der Senden -Bindung normalerweise nicht als reguläres HTML -Formular verwenden. Wenn Sie das Formular wie ein normales HTML -Formular einreichen möchten, kehren Sie einfach von Ihrem Subing -Handler zurück.
Anstatt das Senden im Formular zu verwenden, können Sie auf die Schaltfläche Senden klicken. Mithilfe der Subjektbindung haben Sie jedoch die Vorteile der Verwendung alternativer Möglichkeiten zum Senden des Formulars, z. B. das Drücken der Eingabetaste beim Eingeben in ein Textfeld.
sichtbare Bindung legt die Sichtbarkeit des zugehörigen Elements basierend auf dem Bindungsparameterwert fest. Die Bindung versucht, einen Parameter in einen booleschen Wert umzuwandeln. Die sichtbare Bindung von Knockout sollte an eine Eigenschaft gebunden sein, die an True oder False bewertet wird. Dies hat Vorrang gegenüber jedem Anzeigstil, den Sie mit CSS definiert haben.
<span data-bind="text: msg, visible: toggle"></span>
Bindung aktivieren/deaktivieren, legt das deaktivierte Attribut für das zugeordnete Element basierend auf dem angegebenen Wert fest. Dies wird normalerweise für Formularelemente wie Eingabe, Auswahl und Textbereich verwendet. Knockout bietet integrierte Bindungen, um Eingangselemente zu aktivieren und zu deaktivieren. Die Enable -Bindung ermöglicht das Eingabeelement, wenn die Eigenschaft, die sie an True bewertet, das Element bewertet, und deaktiviert das Element, wenn es auf False bewertet wird. Die Deaktivierungsbindung macht genau das Gegenteil
<p>The tip of the day is: <span data-bind="text: tipOfTheDay"></span></p> function viewModel() { var self = this; self.tipOfTheDay = ko.observable('Relax.Take it easy!') }; ko.applyBindings(new viewModel());
Knockout hat eine eingebaute Bindung mit dem Namen HASFOCUS, die bestimmt und setzt, welches Element den Fokus hat. Die HASFOCUS -Bindung ist praktisch, wenn der Fokus auf einem Formular in einem Formular eingestellt wird, z. B. Suchformular, wenn Besucher die Seite
öffnen<input data-bind="value: name, valueUpdate: 'afterkeydown'"></input> <p data-bind="text: name"></p> function viewModel() { var self = this; self.name = ko.observable() }; ko.applyBindings(new viewModel());
Kontrollkästchen können Daten an die überprüfte Bindung von Knockout gebunden sein. Die geprüfte Bindung sollte an eine Eigenschaft oder einen Ausdruck gebunden sein, der an True oder False bewertet wird. Da die Eigenschaften des Ansichtsmodells als Observable definiert sind, wird das Kontrollkästchen aktualisiert, wenn sich die Quelleigenschaft ändert. Wenn ein Benutzer das Kontrollkästchen überprüft oder deaktiviert, wird der Wert in der Eigenschaft der Ansichtsmodell aktualisiert. Diese Bindung legt den geprüften Status von Optionsfeldern und Kontrollkästchen fest. Bei Kontrollkästchen versucht die Bindung, einen Parameter in einen booleschen Wert umzuwandeln. Für Optionsfelder vergleicht die Bindung das Wertschaltungsattribut der Schaltfläche mit dem Parameter Bindung.
// syntax: data-bind="bindingName: bindingProperty" <span data-bind="text: msg"></span>
Dropdown -Listen haben mehrere wichtige Eigenschaften, um eine Liste von Elementen zu laden, einen Wert anzuzeigen, einen anderen Schlüsselwert zu verwenden und die Auswahl des Benutzers zu speichern. Das Knockout bietet eine eingebaute Bindung für jede von diesen. Optionenbindung legt die Optionen fest, die in einem Dropdown-Listelement angezeigt werden. Der Wert sollte ein Array sein. Diese Bindung kann nicht mit etwas anderem als
Die Optionsbindung identifiziert eine Liste von Werten, die normalerweise aus einer Array -Eigenschaft im Ansichtsmodell angezeigt werden.
<span data-bind="text: msg, visible: toggle"></span>
Die ausgewählten Bindungssteuerungen, die Elemente in einer Multi-Select-Liste derzeit ausgewählt sind. Wenn der Benutzer ein Element in der Multi-Selekt-Liste auswählt oder entzieht
<p>The tip of the day is: <span data-bind="text: tipOfTheDay"></span></p> function viewModel() { var self = this; self.tipOfTheDay = ko.observable('Relax.Take it easy!') }; ko.applyBindings(new viewModel());
<input data-bind="value: name, valueUpdate: 'afterkeydown'"></input> <p data-bind="text: name"></p> function viewModel() { var self = this; self.name = ko.observable() }; ko.applyBindings(new viewModel());
häufig gestellte Fragen zu Knockoutjs
Das obige ist der detaillierte Inhalt vonAnfängerleitfaden zu Knockoutjs: Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!