Ce contenu est essentiellement une traduction des documents originaux. L'intention est d'en apprendre davantage sur KnockoutJs pour Magento 2 et de créer du contenu en portugais sur KnockouJs.
Dans KnockoutJs, les liaisons sont le moyen de connecter la logique du ViewModel (les données et la logique métier) avec la View (HTML). Bref, c'est grâce aux bindings que l'interface utilisateur reflète automatiquement les modifications de vos données, sans avoir besoin de manipuler directement le DOM.
Les liaisons dans KnockoutJs fonctionnent via l'attribut data-bind sur les éléments HTML. Cet attribut est l'endroit où vous spécifiez la liaison que vous souhaitez utiliser et les valeurs associées.
Le clic binding ajoute un gestionnaire d'événements afin que la fonction JavaScript choisie soit invoquée lorsque l'on clique sur l'élément DOM associé. Ceci est le plus souvent utilisé sur les éléments marqués
Chaque fois que l'on clique sur l'élément, cela invoquera la méthode qui a été passée dans le ViewModel, ce qui à son tour change l'état du ViewModel, ce qui provoque l'activation de l'interface utilisateur. mis à jour.
<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>
Par défaut, KnockoutJs empêchera l'événement click d'effectuer des actions standard. Cela signifie que lorsque vous utilisez un clic de liaison sur une balise , le navigateur appellera simplement la fonction et ne naviguera pas vers le href du lien. La liaison clic-clic est généralement utilisée lorsque vous utilisez le lien dans le cadre d'une interface utilisateur qui manipule le ViewModel, et non comme un lien hypertexte normal vers une autre page Web. S'il est nécessaire que l'action de clic standard continue, renvoyez simplement true dans la fonction.
L'événement binding vous permet d'ajouter un gestionnaire d'événement pour un événement spécifié afin que la fonction JavaScript que vous avez choisie soit invoquée lorsque cet événement est déclenché pour l'élément DOM associé. Cela peut être utilisé pour se lier à n'importe quel événement tel qu'une pression sur une touche, un survol de la souris ou une sortie de la souris.
<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>
La binding submit *est une directive de liaison de soumission sur un formulaire qui empêchera l'action de soumission par défaut du navigateur pour ce formulaire, en d'autres termes, le navigateur appellera la fonction de gestionnaire, mais ce ne sera pas le cas. envoyer le formulaire au serveur. La liaison *submit est généralement utilisée lorsque le formulaire est utilisé comme interface avec le ViewModel, et non comme un formulaire HTML normal. Si le formulaire doit être soumis sous forme de formulaire HTML normal, renvoyez simplement true à partir de votre gestionnaire de soumission.
<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 activate entraîne l'activation de l'élément DOM associé lorsque la valeur de son paramètre est vraie. binding disable fonctionne de la manière inverse, provoquant la désactivation de l'élément DOM associé lorsque sa valeur est vraie.
<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>
La binding valeur * lie la valeur de l'élément DOM associé à une propriété dans le *ViewModel. Ceci est généralement utile avec des éléments de formulaire tels que ,
Lorsque l'utilisateur modifie la valeur dans le contrôle de formulaire associé, la valeur sera mise à jour dans le ViewModel. De même, lorsque le ViewModel met à jour la valeur, cela mettra à jour la valeur du contrôle de formulaire à l'écran.
<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>
La valeur binding fonctionne en conjonction avec
La binding textInput lie un champ ( ou
<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>
Le binding textInput, par défaut, ne met à jour son modèle que lorsque l'utilisateur éloigne le focus de la zone de texte. binding textInput met à jour son modèle immédiatement à chaque frappe ou autre mécanisme de saisie de texte.
La binding hasFocus lie l'état de focus d'un élément DOM à une propriété ViewModel. Il s'agit d'une connexion bidirectionnelle selon laquelle lorsque la propriété ViewModel est définie sur true ou false, l'élément associé sera focalisé ou non.
<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>
La liaison cochée lie un contrôle de formulaire cochable, c'est-à-dire une case à cocher () ou un bouton radio () avec une propriété dans 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>
Les options de liaison contrôlent quelles options doivent apparaître dans une liste déroulante (
La valeur attribuée doit être un tableau (ou Tableau observable). L'option il affichera ensuite un élément pour chaque élément de votre tableau.
<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>
La liaison selectedOptions contrôle quels éléments d'une liste à sélection multiple sont actuellement sélectionnés. Il est destiné à être utilisé conjointement avec un
Lorsque l'utilisateur sélectionne ou désélectionne un élément dans la liste à sélection multiple, cela ajoute ou supprime la valeur correspondante à un tableau dans le ViewModel. De même, en supposant qu'il s'agisse d'un Tableau observable dans ViewModel, chaque fois que vous ajoutez ou supprimez des éléments de ce tableau, les éléments correspondants dans l'interface utilisateur seront sélectionnés ou désélectionnés. . C'est une connexion bidirectionnelle.
<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>
Le binding uniqueName garantit que l'élément DOM lié a un attribut de nom non vide. Si l'élément DOM n'a pas d'attribut name, cette connexion en fournira un et le définira sur une valeur de chaîne unique.
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!