Dieser Inhalt ist im Grunde eine Übersetzung der Originalmaterialien. Ziel ist es, mehr über KnockoutJs für Magento 2 zu erfahren und Inhalte auf Portugiesisch über KnockouJs zu erstellen.
In KnockoutJs sind Bindungen die Möglichkeit, die Logik des ViewModel (die Daten- und Geschäftslogik) mit der Ansicht (HTML) zu verbinden. Kurz gesagt: Durch Bindungen spiegelt die Benutzeroberfläche automatisch Änderungen in Ihren Daten wider, ohne dass das DOM direkt manipuliert werden muss.
Bindungen in KnockoutJs funktionieren über das data-bind-Attribut für HTML-Elemente. In diesem Attribut geben Sie die Bindung an, die Sie verwenden möchten, und die zugehörigen Werte.
Der Binding-Klick fügt einen Ereignishandler hinzu, sodass die ausgewählte JavaScript-Funktion aufgerufen wird, wenn auf das zugehörige DOM-Element geklickt wird. Dies wird am häufigsten bei Elementen mit den Tags
Jedes Mal, wenn auf das Element geklickt wird, wird die Methode aufgerufen, die im ViewModel übergeben wurde, was wiederum den Status des ViewModel ändert, wodurch die Benutzeroberfläche angezeigt wird aktualisiert.
<div> You've clicked <span data-bind="text: numberOfClicks"></span> times <button data-bind="click: incrementClickCounter">Click me</button> </div> <script type="text/javascript"> ko.applyBindings({ numberOfClicks : ko.observable(0), incrementClickCounter : function() { var previousCount = this.numberOfClicks(); this.numberOfClicks(previousCount + 1); } }); </script>
Standardmäßig verhindert KnockoutJs, dass das Klick-Ereignis Standardaktionen ausführt. Das bedeutet, dass der Browser bei Verwendung von Binding Click auf einem -Tag nur die Funktion aufruft und nicht zum href des Links navigiert. Click-to-Click-Bindung wird normalerweise verwendet, wenn Sie den Link als Teil einer Benutzeroberfläche verwenden, die das ViewModel manipuliert, und nicht als normalen Hyperlink zu einer anderen Webseite. Wenn es erforderlich ist, dass die Standard-Klickaktion fortgesetzt wird, geben Sie in der Funktion einfach „true“ zurück.
Mit dem Binding-Ereignis können Sie einen Ereignishandler für ein bestimmtes Ereignis hinzufügen, sodass die von Ihnen gewählte JavaScript-Funktion aufgerufen wird, wenn dieses Ereignis für das zugehörige DOM-Element ausgelöst wird. Dies kann verwendet werden, um eine Bindung an jedes Ereignis wie Tastendruck, Mausbewegen oder Beenden der Maus vorzunehmen.
<div> You've clicked <span data-bind="text: numberOfClicks"></span> times <button data-bind="click: incrementClickCounter">Click me</button> </div> <script type="text/javascript"> ko.applyBindings({ numberOfClicks : ko.observable(0), incrementClickCounter : function() { var previousCount = this.numberOfClicks(); this.numberOfClicks(previousCount + 1); } }); </script>
Die Bindung Submit *ist eine Submit-Bindungsanweisung für ein Formular, die die standardmäßige Submit-Aktion des Browsers für dieses Formular verhindert, mit anderen Worten, der Browser ruft die Handler-Funktion auf, tut dies aber nicht Senden Sie das Formular an den Server. Die *submit-Bindung wird normalerweise verwendet, wenn das Formular als Schnittstelle zum ViewModel und nicht als normales HTML-Formular verwendet wird. Wenn das Formular als normales HTML-Formular übermittelt werden muss, geben Sie einfach „true“ von Ihrem Übermittlungs-Handler zurück.
<div> <div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }"> Mouse over me </div> <div data-bind="visible: detailsEnabled"> Details </div> </div> <script type="text/javascript"> ko.applyBindings({ detailsEnabled: ko.observable(false), enableDetails: function() { this.detailsEnabled(true); }, disableDetails: function() { this.detailsEnabled(false); } }); </script>
binding enable bewirkt, dass das zugehörige DOM-Element aktiviert wird, wenn sein Parameterwert wahr ist. Binding disable funktioniert umgekehrt und führt dazu, dass das zugehörige DOM-Element deaktiviert wird, wenn sein Wert wahr ist.
<form data-bind="submit: doSomething"> <button type="submit">Submit</button> </form> <script type="text/javascript"> ko.applyBindings({ this.doSomething = function(formElement) { // ... now do something } }); </script>
Der Binding-Wert *bindet den Wert des DOM-Elements, das einer Eigenschaft im *ViewModel zugeordnet ist. Dies ist normalerweise bei Formularelementen wie ,
Wenn der Benutzer den Wert im zugehörigen Formularsteuerelement bearbeitet, wird der Wert im ViewModel aktualisiert. Wenn das ViewModel den Wert aktualisiert, wird auch der Wert des Formularsteuerelements auf dem Bildschirm aktualisiert.
<p> <input type='checkbox' data-bind="checked: hasCellphone" /> I have a cellphone </p> <p> Your cellphone number: <input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone" /> </p> <script type="text/javascript"> ko.applyBindings({ hasCellphone : ko.observable(false), cellphoneNumber: "" }); </script>
Der Binding-Wert funktioniert in Verbindung mit
Die Bindung textInput bindet ein Feld ( oder
<p>Login name: <input data-bind="value: userName" /></p> <p>Password: <input type="password" data-bind="value: userPassword" /></p> <script type="text/javascript"> ko.applyBindings({ userName: ko.observable(""), // Initially blank userPassword: ko.observable("abc"), // Prepopulate }); </script>
Die Bindung textInput aktualisiert ihr Modell standardmäßig nur, wenn der Benutzer den Fokus vom Textfeld wegbewegt. Binding textInput aktualisiert sein Modell sofort bei jedem Tastendruck oder anderen Texteingabemechanismus.
Die Bindung hasFocus bindet den Fokusstatus eines DOM-Elements an eine ViewModel-Eigenschaft. Es handelt sich um eine bidirektionale Verbindung, bei der das zugehörige Element fokussiert oder unfokussiert ist, wenn die Eigenschaft ViewModel auf true oder false gesetzt ist.
<div> You've clicked <span data-bind="text: numberOfClicks"></span> times <button data-bind="click: incrementClickCounter">Click me</button> </div> <script type="text/javascript"> ko.applyBindings({ numberOfClicks : ko.observable(0), incrementClickCounter : function() { var previousCount = this.numberOfClicks(); this.numberOfClicks(previousCount + 1); } }); </script>
Die aktivierte Bindung bindet ein überprüfbares Formularsteuerelement, also ein Kontrollkästchen () oder ein Optionsfeld () mit eine Eigenschaft in ViewModel.
<div> <div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }"> Mouse over me </div> <div data-bind="visible: detailsEnabled"> Details </div> </div> <script type="text/javascript"> ko.applyBindings({ detailsEnabled: ko.observable(false), enableDetails: function() { this.detailsEnabled(true); }, disableDetails: function() { this.detailsEnabled(false); } }); </script>
Die Bindung-Optionen steuern, welche Optionen in einer Dropdown-Liste (
Der zugewiesene Wert muss ein Array (oder Observable Array) sein. Die Funktion
<form data-bind="submit: doSomething"> <button type="submit">Submit</button> </form> <script type="text/javascript"> ko.applyBindings({ this.doSomething = function(formElement) { // ... now do something } }); </script>
Die Bindung selectedOptions steuert, welche Elemente in einer Mehrfachauswahlliste derzeit ausgewählt sind. Es soll in Verbindung mit einem
Wenn der Benutzer ein Element in der Mehrfachauswahlliste auswählt oder die Auswahl aufhebt, wird der entsprechende Wert zu einem Array im ViewModel hinzugefügt oder daraus entfernt. Unter der Annahme, dass es sich um ein Observable Array in ViewModel handelt, werden die entsprechenden Elemente in der Benutzeroberfläche immer dann ausgewählt oder abgewählt, wenn Sie diesem Array Elemente hinzufügen oder daraus entfernen . Es handelt sich um eine bidirektionale Verbindung.
<p> <input type='checkbox' data-bind="checked: hasCellphone" /> I have a cellphone </p> <p> Your cellphone number: <input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone" /> </p> <script type="text/javascript"> ko.applyBindings({ hasCellphone : ko.observable(false), cellphoneNumber: "" }); </script>
Die Bindung uniqueName stellt sicher, dass das gebundene DOM-Element ein nicht leeres Namensattribut hat. Wenn das DOM-Element kein Attribut name hat, stellt diese Verbindung eines bereit und setzt es auf einen eindeutigen Zeichenfolgenwert.
<p>Login name: <input data-bind="value: userName" /></p> <p>Password: <input type="password" data-bind="value: userPassword" /></p> <script type="text/javascript"> ko.applyBindings({ userName: ko.observable(""), // Initially blank userPassword: ko.observable("abc"), // Prepopulate }); </script>
Das obige ist der detaillierte Inhalt vonSo funktionieren Formularereignisbindungen in KnockoutJs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!