2011-12-16 7 views
2

私は、読み取りが真か偽であるところのモデルが(ID、読んで)次のフィールドがあります。私のRails & BACKBONE.JSアプリで通知Backbone.jsとRailsを使用して一連のレコードを更新するには?

// MODEL 
NotificationModel = App.BB.Model.extend({ 
    defaults : {} 
}); 


// COLLECTION 
NotificationCollection = App.BB.Collection.extend({ 
    model: NotificationModel, 
    url: '/notifications', 

    initialize : function() { 
     var me = this; 
     me.fetch(); 
    } 

}); 

を持っています

私がしたいことは、ユーザーが通知を表示した後、サーバー上でREAD = trueとマークすることです。 Backbone.jsでこれを行う正しい方法は何ですか?

おかげ

答えて

3

BACKBONE.JS には一括アップロードので次の2つの選択肢

  1. は、バックボーンとして機能し続けていますがありません最も得意、 あなたが設定するためにあなたのコレクション内のすべてのモデルを更新することができます項目を読み込みます。

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

    これは、サーバーにモデルを掲載しますし、サーバーを更新(そのモデルのみ) はい、これが重いように見えるかもしれないが、バックボーンは、モデルのない一括更新はありません、このように動作します(まだ?)

  2. もう1つの解決策は、自分でカスタム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... 
    }); 
    

ことを覚えておいてください。そうでない場合は、あなたのコレクション内のモデルがヨーヨーuはやった変更について知らないだろう(このAJAX呼び出しが完了した後、あなたがそれを更新するために、もう一度あなたのコレクションを取得したい場合がありますすべてのモデルはchangedAttributesにread: trueと表示されます。

関連する問題