バックボーン リセット イベントはどのように機能しますか? 私が理解する限りでは
- コレクションからすべてのモデルを削除
- 新しく「取得した」モデルをコレクションに追加する
- リセットイベントを発生させる
私の場合、各モデルは SVG に何かを描画するため、モデルをコレクションから削除する前に remove 関数を呼び出す必要があります。モデルがコレクションから削除されたときにトリガーされるイベントはどれですか?
バックボーン リセット イベントはどのように機能しますか? 私が理解する限りでは
私の場合、各モデルは SVG に何かを描画するため、モデルをコレクションから削除する前に remove 関数を呼び出す必要があります。モデルがコレクションから削除されたときにトリガーされるイベントはどれですか?
@Paul が指摘したように、 の前に発生する事前定義されたイベントはありませんreset
。reset
ただし、コレクションのメソッドをオーバーライドすることで独自のものを提供できます。例えば、
var SVGCollection = Backbone.Collection.extend({
reset: function(models, options) {
options = options || {};
if (!options.silent) {
this.trigger('prereset', this, options);
}
Backbone.Collection.prototype.reset.call(this, models, options);
}
});
そして使用例
var c = new SVGCollection([
{id: 1},
{id: 2}
]);
c.on('prereset', function() {
console.log(c.pluck('id'));
});
c.on('reset', function() {
console.log(c.pluck('id'));
});
c.reset({id: 3});
デモについてはhttp://jsfiddle.net/nikoshr/8vV7Y/を参照してください
各モデルでイベントをトリガーすることもできます。
reset
古いモデルが削除され、新しいモデルが追加された後に解雇されるのは正しいです。
reset
メソッドによってモデルがコレクションから削除されたときに発生するイベントはありません。
コレクションの外にある古いモデルへの参照を保持する必要がある場合があります。リセット イベントが発生すると、それらのモデルへの参照が得られるため、SVG でそれらのモデルの削除関数を呼び出すことができます。