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

时间:2011-12-16 04:51:39

标签: jquery ruby-on-rails backbone.js

我的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的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:3)

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...
    });
    
  3. 请记住:在此ajax调用完成后,您可能希望再次获取您的集合以进行更新(否则您的集合中的模型将不知道您对服务器所做的更改,因此所有模型将在其changedAttributes中列出read: true