[Pkg-javascript-commits] [backbone] 153/281: view events can now be a function that returns an events object

Jonas Smedegaard js at moszumanska.debian.org
Sat May 3 17:02:07 UTC 2014


This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag 0.9.0
in repository backbone.

commit b081fe87a5506d71b50142be846bb15207fcc823
Author: Zack Owens <ztowens at indiana.edu>
Date:   Sat Jan 7 10:17:57 2012 -0500

    view events can now be a function that returns an events object
---
 backbone.js  |  1 +
 test/view.js | 27 ++++++++++++++++++++++-----
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/backbone.js b/backbone.js
index e85eb52..f07f80f 100644
--- a/backbone.js
+++ b/backbone.js
@@ -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];
diff --git a/test/view.js b/test/view.js
index 97fe632..4ed9274 100644
--- a/test/view.js
+++ b/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() {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/backbone.git



More information about the Pkg-javascript-commits mailing list