Backbone 0.9.9で行われた新しい変更を学習しようとしています。
現在、listenTo
とon
の違いを理解するのに問題があります。
listenTo
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
on
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.model.on('change', this.render, this);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
たとえば、メモリリークを避けるためにビューが削除されたときに、listenTo
でstopListening
を使用してすべてのイベントをサブスクライブ解除できると聞いています。
これが唯一の理由ですか?
listenTo
とstopListening
は基本的にコミュニティから来ました。イベントのバインドとバインド解除を簡単にするのに役立ちます。
このテーマについて書いたものを含め、アイデアを取り巻く多くの既存のドキュメントとブログ投稿があります。
ジョニー・オシカは、私がこの技術を使用して見た最初の人です。もともとは、StackOverflowの質問に対する回答としてここに投稿されました: Backbone.js:ビューを再作成または再作成しますか?
これについて私が書いたことをここで読むことができます:
ビューを作成すると、listenTo
とon
の両方がイベント処理を追加します。ただし、ビューが破棄されると、listenTo
呼び出しは イベントハンドラーを自動的に削除します になります。この メモリリークを防ぐ およびゾンビイベントリスナー。
したがって、ハンドラを自分で管理する場合は、on
を使用します。必ずoff
を呼び出してください。それ以外の場合は、listenTo
を呼び出します。