Accueil » Tous les articles » JavaScript » Comment avoir de belles boucles avec KnockOut

Comment avoir de belles boucles avec KnockOut

 Une des puissances du javascript dans Magento 2 est de permettre de faire du chargement assynchrone sans vraiment se forcer le cerveau. Que ce soit pour charger une liste de produits ou les résultats d’un filtrage. La logique mise en place dans KnockOut va vous permettre de faire facilement des listes. Si vous arrivez directement sur cette page, je ne saurez que vous conseiller de jeter un œil à l’initiation à knockout avant de continuer.

Pour illustrer notre propos, nous allons voir comment mettre en place un composant qui chargera les résultats de recherche en fonction de ce que l’utilisateur saisi dans un champ. Si vous souhaitez réellement faire cela, sachez qu’il existe déjà un widget dans Magento 2 qui le fait.

Le composant de vue

Tout d’abord, nous allons créer le composant de vue. Pour cela, il nous faudra principalement deux choses : 

  • une variable qui sera modifiée quand l’utilisateur tapera un mot de recherche 
  • un tableau observable qui va contenir les résultats de notre recherche.

Il faut songer que le temps de réponse du serveur peut être supérieur à la vitesse à laquelle tape un utilisateur. C’est pourquoi, dans cet exemple précis, j’ai recours à la limitation de fréquence (rate limit) pour les observables. Cela peut être utile quand l’utilisateur est amené à effectuer des modifications rapides d’un champ mais qui n’ont besoin d’une réponse qu’une fois la saisie finie (ou au moins en pause).

Une fois que cette partie a été créé, nous allons pouvoir passer à la suite.

Le modèle de vue

Le html doit faire référence aux deux choses importantes de notre composant de vue. A savoir, le mot recherché qui doit être envoyé au composant et les résultats qui doivent être récupérés depuis le composant.

Une fois cela réalisé, vous pouvez utiliser les lier via le scope comme cela est décrit dans l’initiation à knockout cité dans l’entête de ce billet.

Différentes utilisations

Cela peut également servir à filtrer des produits directement sur une catégorie, mettre en place des questions interdépendantes pour un formulaire de contact, lister les différents moyens de paiement proposés dans un bloc de réassurance, afficher l’ensemble des magasins physiques du groupe…

Besoin d’aide pour mettre cela en place ?


Publié

dans

, ,

par

Commentaires

Laisser un commentaire