2011-06-28 4 views
0

backbone.jsを使用すると、コレクションのremove methodが「remove」イベントと呼ばれるときに発生します。backbone.jsイベントと共に余分なデータを渡す

  1. この「削除」イベントを拡張して、削除する特定のモデルの特定の属性などの余分なデータを渡すにはどうすればよいですか?

  2. idまたはcidで指定された特定のモデルによってトリガされたイベントを削除するにはどうすればよいですか?

「変更」イベントにも適用できるソリューションがあるとしますか?手伝ってくれてありがとう。

+0

あなたは基本的にコレクションのモデルにバインドされたビューの束を持っていますか?そうであれば、コレクションからビューにそれぞれのモデルを供給し、そのビューでは 'remove'イベントにバインドされます。 –

+0

@Bill thanks私はそれが任意に変更にバインドすることが可能か、またはcidによってイベントを削除することが可能かどうか疑問に思っていました。例えば.bind( "c4change"、function(){}) 'ここでc4はcidです。 – fortuneRice

答えて

2

コレクションからモデルを削除する場合は、そのモデルはもう必要ありません。私は、単に何かを削除する以上のことを行うには、削除を拡張する点を逃していると思う。

コレクションでremoveを呼び出すと、コレクション内のモデルまたはモデルの配列をremove関数に渡します。あなたのコレクションのremove関数を呼び出す直前に、これらのモデルで必要な最後の作業をすることをお勧めします。その時点で、削除を計画しているすべてのモデルとその属性を持つ必要があります。今、それに結合し

var myModel = myCollection.get(id); //using the id of the model 

または

var myModel = myCollection.getByCid(cid); //using the cid of the model 

:あなただけのコレクションから、あなたがしたいモデルを取得し、それにバインドする必要がある特定のモデルの変更イベントにバインドする

モデル:

myModel.bind("change", function() { 
    //do something 
}); 

または、コレクション内のすべてのモデルにバインドの変更:

myCollection.bind("change", function(model) { 
    //do something, model is the model that triggered the change event 
}); 
+0

応答のために@ryanmarcに感謝します。ページ上に削除するモデルを参照する他の要素があるので、他の要素にそれらを参照して他の処理を行うことができるように、そのモデルに通知します。あなたが言うようにこれを削除する直前にこれを行うことができると思いますが、イベントがとにかく呼び出されているので、removeイベント自体と共にそれらのモデルの属性を渡すのがよりクリーンか効率的かどうか疑問に思っていました。 – fortuneRice

+0

私には、あなたの呼び出しを行い、モデルをremoveメソッドの別の適切な場所に渡して、より多くのことを行うようにremoveを拡張するのではなく、もっときれいになるようです。ただし、削除機能をオーバーライドする場合は、バックボーンソース(コレクションの下)からコピーして、コレクションを拡張する場所に貼り付けます。そのコレクションでremoveを呼び出すと、バックボーンソース内の関数ではなく関数を使用します。 – ryanmarc

関連する問題