mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
view events can now be a function that returns an events object
This commit is contained in:
@@ -940,6 +940,7 @@
|
||||
// not `change`, `submit`, and `reset` in Internet Explorer.
|
||||
delegateEvents : function(events) {
|
||||
if (!(events || (events = getValue(this, 'events')))) return;
|
||||
if (_.isFunction(events)) events = _.bind(events, this)();
|
||||
this.undelegateEvents();
|
||||
for (var key in events) {
|
||||
var method = events[key];
|
||||
|
||||
27
test/view.js
27
test/view.js
@@ -57,17 +57,34 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
test("View: delegateEvents allows functions for callbacks", function() {
|
||||
var counter = 0;
|
||||
view.counter = 0;
|
||||
view.el = "#qunit-banner";
|
||||
var events = {"click": function() { counter++; }};
|
||||
var events = {"click": function() { this.counter++; }};
|
||||
view.delegateEvents(events);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(counter, 1);
|
||||
equals(view.counter, 1);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(counter, 2);
|
||||
equals(view.counter, 2);
|
||||
view.delegateEvents(events);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(counter, 3);
|
||||
equals(view.counter, 3);
|
||||
});
|
||||
|
||||
test("View: delegateEvents allows function as events arg", function() {
|
||||
view.counter = 0;
|
||||
view.el = "#qunit-banner";
|
||||
var events = function () {
|
||||
return {"click": this.click};
|
||||
};
|
||||
view.click = function() { this.counter++; };
|
||||
view.delegateEvents(events);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(view.counter, 1);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(view.counter, 2);
|
||||
view.delegateEvents(events);
|
||||
$('#qunit-banner').trigger('click');
|
||||
equals(view.counter, 3);
|
||||
});
|
||||
|
||||
test("View: undelegateEvents", function() {
|
||||
|
||||
Reference in New Issue
Block a user