如何使用Backbone.js和Rails更新一组记录?

我在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(); } }); 

该模型具有以下字段(id,read),其中read为true或false。

我想要做的是一旦用户查看通知,在服务器上将所有标记为READ = true。 使用Backbone.js的正确方法是什么?

谢谢

Backbone.js中没有批量上传,因此您有两个选择

  1. 继续作为骨干最好的工作,您可以更新集合中的每个模型以将项目设置为已读。

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

    这会将模型发布到服务器并更新您的服务器(仅适用于该模型)是的,这可能看起来很重,但骨干网就是这样工作的,没有大量的模型更新(但是?)

  2. 另一种解决方案是自己发布一个定制的Ajax调用,例如这个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... }); 

请记住:在此ajax调用完成后,您可能希望再次获取您的集合以更新它(否则您的集合中的模型将不知道您对服务器所做的更改,因此所有模型将列出read: true在changedAttributes中为read: true