2011-12-15 11 views
1

私の質問は、コレクション内のモデルをどのように更新するのですか?ここに私がやっていることがあります。ページの読み込み時に、連絡先のリストを取得します。あるビューでは、これらの連絡先を順序付けられていないリストに記載します。各連絡先はクリック可能で、編集フォームに移動します。連絡先を変更すると、その連絡先を保存できます。これにより、変更されたモデルをコレクションに保存するメソッドに移動します。あなたはどうしますか?バックボーンのドキュメントには更新方法がありません(少なくとも私はそれを見ません)。私はこれを行う方法を作成しましたが、それが好ましいバックボーンの方法であるかどうかはわかりません。ここでは、次のとおりです。コレクション内のモデルを更新する

 updatePlan : function() 
     { 
      //unique ID of the model 
      var id = $('input[ name=id ]').val(); 
      //remove the old model from the collection 
      this.collection.remove(this.model); 
      //add the updated model to the collection 
      this.collection.add(this.model);    

     } 
あなたはこのような関数があると思うだろう

:助けを

 updatePlan : function() 
     { 
      this.collection.update(this.model); 

     } 

おかげ

答えて

0

あなたは、ユーザーが連絡先を編集することができますあなたのビューを持つことができますあなたのためにモデルを更新してください。モデルは参照によって渡されるので、コレクションの一部であるコレクション内でも更新されます。

例を示します。

EditView = Backbone.View.extend({ 
    events: { 
    'change #name': 'nameChanged', 
    'change #age': 'ageChanged' 
    }, 
    render: function() { 
    //render code 
    }, 
    nameChanged: function() { 
    var nameValue = this.$('#name').val(); 
    this.model.set({ Name : nameValue }); 
    }, 
    ageChanged: function() { 
    var ageValue = this.$('#age').val(); 
    this.model.set({ Age : ageValue }); 
    } 
} 

し、編集ビューを作成するとき、あなたは

selectedContact = contactCollection.at(0); 
var editView = new EditView({ model: contact }); 
$('#editDiv').html(editView.render().el); 

唯一のことはやって、左のコレクションから選択したモデルに合格した後は、サーバーにモデルを保存するときに、ユーザーがクリック保存ボタン。

0

私はPaulに同意します。コレクションのビューとモデルのビューが必要です。 モデルのビューでモデルを編集することができ、保存が正しく伝播するはずです。

しかし、それは1つのモデルを表示しているので、1つのモデルと1つのコレクション(あなたの削除とthis.modelの追加に基づいて)ビューを持っているようだ...私は仮定:D

これを行うことができます。

updatePlan : function() 
    { 
     //unique ID of the model 
     var id = $('input[ name=id ]').val(); 
     this.model.set({id: id}); 
     this.model.save(); 
    } 

私は問題が最初の「論理」であるかもしれないと思うので、コレクション内のモデルを編集しないでください。 モデルを編集すると、そのモデルは単にコレクションに属します。 そうなイベントがモデルとidのあなたのセットのようなmodel.collection、両方のために起動します、変更します。idイベントが起動し、任意のそのコレクションのいずれかのモデルに結合するのをトリガーする

それが役に立てば幸い:)

関連する問題