我的Rails&中有通知Backbone.js app
// 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的正确方法是什么?
由于
答案 0 :(得分:3)
Backbone.js中没有批量上传 所以你有两个选择
继续工作,骨干做得最好, 您可以更新集合中的每个模型,将项目设置为已读。
myCollection.each(function(note){
note.set({read: true});
note.save();
});
这会将模型发布到服务器并更新您的服务器(仅适用于该模型) 是的,这可能看起来很重,但骨干就是这样,没有大量的模型更新(但是?)
另一个解决方案就是自己发布一个定制的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调用完成后,您可能希望再次获取您的集合以进行更新(否则您的集合中的模型将不知道您对服务器所做的更改,因此所有模型将在其changedAttributes中列出read: true
。