Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

Découvrir Ember.js

Supprimer des objets

Testez gratuitement nos 1342 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez voir comment effectuer la suppression de vos objets en local, comme sur votre service web.
04:53

Transcription

Si vous souhaitez supprimer un objet de votre application et prévenir le serveur, il y a deux moyens de le faire. Votre interface graphique est déjà prête, puisque nous avons notre bouton de confirmation, et lorsqu'on clique dessus, pour l'instant, au lieu de supprimer réellement les choses, il a affiché une alerte. On voit d'ailleurs qu'il y a une petite erreur, puisqu'on utilise l'objet sous la forme Ajax, on n'a pas encore modifié ce code, alors qu'avec Ember Data, pour accéder aux propriétés, il faut faire : l'objet .get, et entre guillemets, le nom de la propriété. Nous, on faisait group.title, ce qui ne marche pas ici. On va donc aller dans ce contrôleur et remplacer cette alerte par le code de suppression. Le contrôleur, donc, il est dans app, controllers, groups, et c'est le contrôleur d'un groupe. Voici l'action qui sera appelée dès qu'on supprime : on appuie deux fois sur le bouton supprimer enfin, quand on appuie et qu'on confirme. C'est ça qu'il aurait fallu remplacer par get "Title". Mais nous, on va supprimer cette alerte, on n'en a pas besoin. Pour le supprimer, le premier moyen consiste à faire group.deleteRecord. En appelant cette fonction, ça va le supprimer localement uniquement. Ça veut dire : on va changer d'objet pour pas supprimer celui-ci, on va supprimer celui qui est quasiment vide. Je vais cliquer sur Supprimer. Et là, ce qui s'est passé on voit qu'il y a eu un changement, puisque le bouton Enregistrer est apparu, vous vous rappelez, ça veut dire qu'il y a des attributs qui sont considérés comme sales, donc devant être sauvegardés. Le groupe est toujours présent ici, on est toujours dans la page donc on a l'impression qu'il n'a pas vraiment été supprimé, mais on va essayer de voir ce qui se passe. Donc quand on affiche l'inspecteur, il vous suffit d'aller dans Ember dans View Tree, et vous pouvez voir le modèle à l'heure actuelle. Vous avez aussi un accès à toutes les données chargées en cliquant sur Data. Vous voyez, par exemple, groups, j'en ai quatre, et vous voyez, j'en ai un qui est en bleu. Donc c'est celui que je suis en train d'éditer. Quand il est en bleu, ça veut dire que justement, il y a des changements nécessaires, qu'il faut prévenir le serveur qu'il y a des changements qui se sont passés en local. Donc il a tous les attributs, il est toujours présent, il n'a pas été supprimé. Par contre, si je vais dans les Flags, donc les propriétés fournies par Ember, on a has DirtyAttributes qui a true, parce qu'il y a des changements qui ont été effectués et notamment isDeleted qui est passé à true. Par contre, au niveau réseau, le serveur n'a jamais eu vent de quoi que ce soit. C'est uniquement en local qu'il prévient que cet élément va être supprimé. Si je clique sur Enregistrer, il va vraiment le supprimer, Il va vous prévenir le serveur puisque le moyen de confirmer la suppression d'un objet sur lequel on a appelé un deleteRecord, c'est de faire un group.save. Ça, ça va le supprimer complètement. C'est ce qu'on fait justement avec le bouton Enregistrer. Donc on aurait pu très bien faire le bouton Enregistrer et ça l'aurait vraiment supprimé. Ce qu'on peut faire aussi, si vous ne souhaitez pas le supprimer d'abord en local puis ensuite envoyer le serveur, vous avez une fonction directe, qui s'appelle : destroyRecord. Et cette fonction, par contre, elle est différente. Quand je vais cliquer sur Supprimer, Confirmer, - alors je pense que c'est mon serveur qui doit retourner quelque chose d'incorrect. Voilà, donc ça a marché, c'est mon serveur, encore une fois, qui n'est pas 100 % compatible avec Ember. En fait, ce qui s'est passé quand j'ai fait le destroy, c'est qu'il a envoyé la requête DELETE à l'URL groups/4, c'est exactement ce qu'il fallait faire, sauf que le serveur, en théorie si tout a bien marché, il retourne en 200, ce qu'il a fait. Et il est censé aussi retourner des objets vides en objets vides, mais il a encore retourné le groups, vous savez, c'est la petite modif que j'ai faite pour le rendre pseudo compatible avec Ember. Donc encore une fois, là c'est vraiment lié au serveur, ne vous préoccupez pas de cette erreur-là. Si vous le faites sur votre véritable serveur, ça devrait marcher sans problème. Le plus important au niveau d'Ember, c'est que cette requête parte. C'est vraiment ça qui nous intéresse. Je vais agrandir ça pour qu'on y voie un petit peu mieux. Au niveau des requêtes, il demande encore une fois qu'est-ce qu'il a le droit de faire. Il envoie une requête OPTIONS, c'est-à-dire qu'il retourne toutes les infos, c'est ce que le serveur accepte. Et surtout, là, il fait un DELETE. Donc ça, normalement, au niveau de votre serveur si vous avez bien fait les choses, ça supprime l'élément et ça retourne des accolades vides pour prévenir que la suppression est effective. Et automatiquement, ce qui va se passer si votre serveur retourne des données correctes, c'est que cet élément va être supprimé dans tout le site. Donc vous n'aurez plus aucune référence à l'objet si le serveur retourne qu'il l'a bien supprimé. Si j'actualise, il est fort probable que mon serveur ait bien supprimé l'élément. Donc je vais actualiser. Erreur de chargement. Ben oui parce que le groupe 4, forcément, il n'existe plus le 4. Donc si je charge la liste des groupes, voilà. Donc là, ça marche, parce qu'il récupère une liste. Il avait réussi à le supprimer, c'est juste que la valeur de retour n'était pas au format correct, donc Ember a cru que ça n'avait pas marché. Voilà pour la suppression. Donc vous voyez, c'est quand même relativement simple : soit vous supprimé en local et vous enregistrez les changements, soit vous avez une fonction destroyRecord qui va directement le supprimer en local et à distance.

Découvrir Ember.js

Créez vos composants et mettez en page vos sites avec une facilité déconcertante avec Ember.js. Apprenez à créer des routes et à charger vos modèles depuis un service web externe.

2h57 (37 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :31 mars 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !