mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Merge pull request #1714 from RStankov/view-dispose-can-work-with-normal-objects
Check if model/collection support .off when disposing of the view
This commit is contained in:
@@ -1234,8 +1234,8 @@
|
||||
// memory leaks.
|
||||
dispose: function() {
|
||||
this.undelegateEvents();
|
||||
if (this.model) this.model.off(null, null, this);
|
||||
if (this.collection) this.collection.off(null, null, this);
|
||||
if (this.model && this.model.off) this.model.off(null, null, this);
|
||||
if (this.collection && this.collection.off) this.collection.off(null, null, this);
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
11
test/view.js
11
test/view.js
@@ -286,11 +286,11 @@ $(document).ready(function() {
|
||||
test("dispose", 0, function() {
|
||||
var View = Backbone.View.extend({
|
||||
events: {
|
||||
click: function() { ok(false); }
|
||||
click: function() { fail(); }
|
||||
},
|
||||
initialize: function() {
|
||||
this.model.on('all x', function(){ ok(false); }, this);
|
||||
this.collection.on('all x', function(){ ok(false); }, this);
|
||||
this.model.on('all x', function(){ fail(); }, this);
|
||||
this.collection.on('all x', function(){ fail(); }, this);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -305,6 +305,11 @@ $(document).ready(function() {
|
||||
view.$el.click();
|
||||
});
|
||||
|
||||
test("dispose with non Backbone objects", 0, function() {
|
||||
var view = new Backbone.View({model: {}, collection: {}});
|
||||
view.dispose();
|
||||
});
|
||||
|
||||
test("view#remove calls dispose.", 1, function() {
|
||||
var view = new Backbone.View();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user