Comment mettre à jour un ensemble d’enregistrements à l’aide de Backbone.js & Rails?

J’ai des notifications dans mon application Rails & Backbone.js

// MODEL NotificationModel = App.BB.Model.extend({ defaults : {} }); // COLLECTION NotificationCollection = App.BB.Collection.extend({ model: NotificationModel, url: '/notifications', initialize : function() { var me = this; me.fetch(); } }); 

Le modèle comporte les champs suivants (id, read) où read est true ou false.

Ce que je veux faire, c’est qu’une fois que l’utilisateur a visualisé les notifications, marquez tout comme READ = true sur le serveur. Quelle est la bonne façon de faire cela avec Backbone.js?

Merci

Il n’y a pas d’envoi en masse dans Backbone.js, vous avez donc deux choix

  1. continue de fonctionner de manière optimale, vous pouvez mettre à jour chaque modèle de votre collection pour définir l’élément comme lu.

     myCollection.each(function(note){ note.set({read: true}); note.save(); }); 

    cela va poster le modèle sur le serveur et mettre à jour votre serveur (pour ce modèle uniquement) oui, cela peut sembler lourd, mais le backbone fonctionne de cette façon, il n’y a pas de mise à jour en masse des modèles (encore?)

  2. l’autre solution consiste à l’envoyer vous-même en utilisant un appel Ajax personnalisé, par exemple cet appel jQuery.

     var oData = {models : myCollection.toJSON() }; $.ajax({ type: "POST", url: "my/backend/url.php", data: oData }).done(function( msg ) { alert( "Data Saved: " + msg ); // your code after the post is completed... }); 

Gardez à l’esprit que: une fois cet appel ajax terminé, vous souhaiterez peut-être récupérer votre collection pour la mettre à jour (sinon, les modèles de votre collection ne seront pas informés des modifications que vous avez apscopes au serveur, de sorte que tous les modèles seront read: true dans leurs atsortingbuts modifiés.