Knockout.js est ne pas une bibliothèque d'animation. Toutes les mises à jour automatiques de Knockout.js sont immédiatement appliquée chaque fois que les données sous-jacentes changent. Pour animer ses modifications, nous devons creuser dans les éléments internes de Knockout.js et créer manuellement des transitions animées à l'aide d'un autre framework JavaScript tel que jQuery ou MooTools. Cette leçon est restée fidèle aux routines d’animation de jQuery, mais les concepts présentés s’appliquent également à d’autres bibliothèques d’animation..
Pour cette leçon, nous allons revenir à une version simplifiée de notre exemple de panier d'achat. Créez un nouveau fichier HTML avec le contenu suivant. Nous ne ferons aucune demande AJAX, alors n'hésitez pas à la placer n'importe où sur votre ordinateur. Cependant, nous utiliserons les routines d’animation de jQuery. Veillez donc à inclure un lien vers votre copie de la bibliothèque jQuery..
Animation de Knockout.js
Produit | Prix | |
---|---|---|
Espérons que tout cela est en revue maintenant. Nous avons un tableau observable contenant un tas de produits, un pour chaque
reliure qui affiche chacun d'eux, et un bouton pour ajouter plus d'articles au panier.
Knockout.js est une bibliothèque d'interface utilisateur puissante, mais une fois que vous la combinez avec les fonctionnalités d'animation d'un framework tel que jQuery ou MooTools, vous êtes prêt à créer des interfaces utilisateur vraiment époustouflantes avec un minimum de balises. Dans un premier temps, nous examinerons l’animation de listes, puis la section suivante présente un moyen plus générique d’animer des composants de vue..
le pour chaque
la liaison a deux callbacks nommés avantRetirer
et afterAdd. Ces fonctions sont exécutées avant qu'un élément ne soit supprimé de la liste ou après son ajout à la liste, respectivement. Cela nous donne l’occasion d’animer chaque élément avant que Knockout.js ne manipule le DOM. Ajouter les rappels au
Au lieu d’une propriété, notre
pour chaque
La liaison prend maintenant un littéral d'objet en tant que paramètre. Les paramètresLes données
property pointe sur le tableau que vous souhaitez afficher et les propriétés beforeRemove et afterAdd pointent sur les fonctions de rappel souhaitées. Ensuite, nous devrions définir ces rappels sur le ShoppingCart ViewModel:this.showProduct = function (element) if (element.nodeType === 1) $ (element) .hide (). fadeIn (); ; this.hideProduct = function (element) if (element.nodeType === 1) $ (element) .fadeOut (function () $ (element) .remove ();); ;le
showProduct ()
callback utilise jQuery pour faire en sorte que de nouveaux éléments de la liste s’affichent progressivement.hideProduct ()
callback les supprime, puis les supprime du DOM. Les deux fonctions prennent l’élément DOM affecté comme premier paramètre (dans ce cas, c’est unélément). Les instructions conditionnelles garantissent que nous travaillons avec un élément à part entière et non un simple nœud de texte. Le résultat final devrait être des éléments de liste qui effectuent une transition en douceur vers et hors de la liste. Bien sûr, vous êtes libre d'utiliser l'une des autres transitions de jQuery ou d'effectuer un post-traitement personnalisé dans l'un des rappels..
Liaisons personnalisées
le
pour chaque
Les rappels fonctionnent très bien pour animer des listes, mais malheureusement, d'autres liaisons ne proposent pas cette fonctionnalité. Donc, si nous voulons animer d'autres parties de l'interface utilisateur, nous devons créer Douane les liaisons qui ont l'animation intégrée directement dans eux.Les liaisons personnalisées fonctionnent comme les liaisons par défaut de Knockout.js. Par exemple, considérons les champs de formulaire suivants:
Nécessite des instructions de manipulation spéciales
La case à cocher agit comme une bascule pour le
, mais puisque nous utilisons le
visible
binding, Knockout.js l'ajoute ou le supprime soudainement du DOM. Assurer une transition en douceur pour le, nous allons créer une liaison personnalisée appelée visibleFade:
Bien sûr, cela ne fonctionnera pas tant que nous n'aurons pas ajouté la liaison personnalisée à Knockout.js. Nous pouvons le faire en ajoutant un objet définissant la liaison à
ko.bindingHandlers
comme indiqué dans l'exemple de code suivant. Cela se produit également lorsque toutes les liaisons intégrées sont définies..ko.bindingHandlers.visibleFade = init: function (élément, valueAccessor) var value = valueAccessor (); $ (element) .toggle (value ()); , update: function (element, valueAccessor) var value = valueAccessor (); valeur() ? $ (element) .fadeIn (): $ (element) .fadeOut ();le
init
property spécifie une fonction à appeler lorsque Knockout.js rencontre la liaison pour la première fois. Ce rappel doit définir l'état initial du composant vue et effectuer les actions de configuration nécessaires (par exemple, enregistrer des écouteurs d'événements). PourvisibleFade
, tout ce que nous avons à faire est d’afficher ou de masquer l’élément en fonction de l’état du ViewModel. Nous avons implémenté cela en utilisant la méthode toggle () de jQuery.le
élément
paramètre est l'élément DOM lié, etvaleurAccesseur
est une fonction qui retournera la propriété ViewModel en question. Dans notre exemple, l'élément fait référence àle
mettre à jour
La propriété spécifie une fonction à exécuter chaque fois que l'observable associé change, et notre rappel utilise la valeur dehasInstructions
pour faire la transition
Résumé
Dans cette leçon, nous avons découvert deux méthodes d’animation des composants de vue Knockout.js. Premièrement, nous avons ajouté des méthodes de rappel à la
pour chaque
binding, ce qui nous permet de déléguer l'ajout et la suppression d'éléments à une fonction définie par l'utilisateur. Cela nous a permis d'intégrer les transitions animées de jQuery dans notre modèle Knockout.js. Nous avons ensuite exploré les liaisons personnalisées comme moyen d’animer des éléments arbitraires..Cette leçon présente un cas d'utilisation courant pour les liaisons personnalisées, mais elles ne se limitent en aucun cas à l'animation de composants d'interface utilisateur. Les liaisons personnalisées peuvent également être utilisées pour filtrer les données au fur et à mesure de leur collecte, écouter les événements personnalisés ou créer des widgets réutilisables tels que des grilles et du contenu paginé. Si vous pouvez encapsuler un comportement dans un
init
et une fonction de mise à jour, vous pouvez le transformer en une liaison personnalisée.
Conclusion
Cette série couvrait la grande majorité des Knockout.
Knockout.js est une bibliothèque JavaScript pure qui facilite incroyablement la création d'interfaces utilisateur dynamiques et centrées sur les données. Nous avons appris à exposer les propriétés ViewModel à l'aide d'observables, à lier des éléments HTML à ces observables, à gérer les entrées utilisateur à l'aide de liaisons interactives, à exporter ces données vers un script côté serveur et à animer des composants à l'aide de liaisons personnalisées. Espérons que vous êtes plus que prêt à migrer ces connaissances vers vos applications Web réelles..
Cette série couvrait la grande majorité de l’API Knockout.js, mais il reste encore un certain nombre de nuances à découvrir. Ces sujets incluent: les liaisons personnalisées pour les types de données agrégées, la
étrangler
extender pour l'évaluation asynchrone d'observables calculés et pour s'abonner manuellement aux événements d'un observable. Cependant, tous ces sujets avancés ne devraient pas être nécessaires pour une application Web typique. Néanmoins, Knockout.js fournit une pléthore d’opportunités d’extensibilité que vous pouvez explorer..Si vous préférez relire cette session dans ce livre "> sous forme de livre électronique, assurez-vous de consulter le site Web de Syncfusion. En outre, ils offrent une variété de livres électroniques gratuits, tout comme celui-ci.!
Cette leçon représente un chapitre de Knockout Succinctly, un eBook gratuit de l'équipe de Syncfusion.