


Knockout-Kenntnisse für die Erstellung benutzerdefinierter Bindungen in Javascript
Übersicht
Zusätzlich zu den im vorherigen Artikel aufgeführten integrierten Bindungstypen von KO (z. B. Wert, Text usw.) können Sie auch benutzerdefinierte Bindungen erstellen.
Registrieren Sie Ihren Bindungshandler
ko.bindingHandlers.yourBindingName = { init: function(element, valueAccessor, allBindings, viewModel, bindingContext) { // This will be called when the binding is first applied to an element // Set up any initial state, event handlers, etc. here }, update: function(element, valueAccessor, allBindings, viewModel, bindingContext) { // This will be called once when the binding is first applied to an element, // and again whenever any observables/computeds that are accessed change // Update the DOM element based on the supplied values here. } };
Als nächstes können Sie eine benutzerdefinierte Bindung für jedes Dom-Element verwenden:
<div data-bind="yourBindingName: someValue"> </div>
Hinweis: Sie müssen in Ihrem Handler nicht sowohl Init- als auch Update-Rückrufe bereitstellen, Sie können einen von beiden bereitstellen.
Update-Rückruf
Wie der Name schon sagt, ruft ko automatisch Ihren Aktualisierungsrückruf auf, wenn Ihr beobachtbares Überwachungsattribut aktualisiert wird.
Es hat die folgenden Parameter:
-Element: Verwenden Sie dieses gebundene Dom-Element;
allBindings: Alle Attributwerte, die an das Modell dieses Dom-Elements gebunden sind. Rufen Sie beispielsweise callBindings.get('name') auf, um den gebundenen Namensattributwert zurückzugeben (wenn er nicht vorhanden ist, geben Sie undefiniert zurück), oder call allBindings.has('name') bestimmt, ob name an den aktuellen Dom
viewModel: In Knockout.3x veraltet, Sie können bindingContext.$data oder bindingContext.$rawData verwenden, um das aktuelle viewModel abzurufen;
bindingContext: Bindungskontext, Sie können bindingContext.$data, bindingContext.$parent, bindingContext.$parents usw. aufrufen, um Daten zu erhalten;
Sie können diese benutzerdefinierte Bindung dann wie folgt verwenden:
ko.bindingHandlers.slideVisible = { update: function(element, valueAccessor, allBindings) { // First get the latest data that we're bound to var value = valueAccessor(); // Next, whether or not the supplied model property is observable, get its current value var valueUnwrapped = ko.unwrap(value); // Grab some more data from another binding property var duration = allBindings.get('slideDuration') || 400; // 400ms is default duration unless otherwise specified // Now manipulate the DOM element if (valueUnwrapped == true) $(element).slideDown(duration); // Make the element visible else $(element).slideUp(duration); // Make the element invisible } };
<div data-bind="slideVisible: giftWrap, slideDuration:600">You have selected the option</div> <label><input type="checkbox" data-bind="checked: giftWrap" /> Gift wrap</label> <script type="text/javascript"> var viewModel = { giftWrap: ko.observable(true) }; ko.applyBindings(viewModel); </script>
ko ruft Ihre Init-Funktion für jedes Dom-Element auf, das Bindung verwendet. Dies hat zwei Hauptzwecke:
(2) Registrieren Sie einige Ereignishandler, zum Beispiel: Wenn der Benutzer auf das Dom-Element klickt oder es ändert, können Sie den Status des Überwachungsattributs ändern;
ko verwendet genau denselben Parametersatz wie der Update-Callback.
Wenn Sie mit dem vorherigen Beispiel fortfahren, möchten Sie möglicherweise, dass slideVisible den Sichtbarkeitsstatus des Elements (ohne Animationseffekt) festlegt, wenn die Seite zum ersten Mal angezeigt wird, und der Animationseffekt ausgeführt wird, wenn er sich später ändert. So können Sie vorgehen um es zu tun:
giftWrap wird initialisiert und als falsch definiert (ko.observable(false)). Der zugehörige DIV wird während der Initialisierung ausgeblendet und dann wird der DIV nur angezeigt, wenn der Benutzer auf das Kontrollkästchen klickt.
ko.bindingHandlers.slideVisible = { init: function(element, valueAccessor) { var value = ko.unwrap(valueAccessor()); // Get the current value of the current property we're bound to $(element).toggle(value); // jQuery will hide/show the element depending on whether "value" or true or false }, update: function(element, valueAccessor, allBindings) { // Leave as before } };
Jetzt können Sie Ihre beobachtbaren Werte über die „Focusedness“-Bindung des Elements lesen und schreiben.
ko.bindingHandlers.hasFocus = { init: function(element, valueAccessor) { $(element).focus(function() { var value = valueAccessor(); value(true); }); $(element).blur(function() { var value = valueAccessor(); value(false); }); }, update: function(element, valueAccessor) { var value = valueAccessor(); if (ko.unwrap(value)) element.focus(); else element.blur(); } };
Der obige Inhalt ist die vom Herausgeber geteilte Methode zum Erstellen einer benutzerdefinierten Knockout-Bindung. Ich hoffe, sie gefällt Ihnen.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

Dieses Tutorial zeigt, dass dynamische Seitenfelder über AJAX geladen werden und sofortige Aktualisierung ohne vollständige Seiten -Nachladen ermöglicht werden. Es nutzt JQuery und JavaScript. Betrachten Sie es als einen benutzerdefinierten Content-Box-Loader im Facebook-Stil. Schlüsselkonzepte: Ajax und JQuery

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter

Diese JavaScript -Bibliothek nutzt das Fenster.name -Eigenschaft, um Sitzungsdaten zu verwalten, ohne sich auf Cookies zu verlassen. Es bietet eine robuste Lösung zum Speichern und Abrufen von Sitzungsvariablen über Browser hinweg. Die Bibliothek bietet drei Kernmethoden: Sitzung
