diff --git a/packages/blaze/view.js b/packages/blaze/view.js
index 9b4e703e91..c3412d34e3 100644
--- a/packages/blaze/view.js
+++ b/packages/blaze/view.js
@@ -529,7 +529,11 @@ Blaze._addEventMap = function (view, eventMap, thisInHandler) {
function (evt) {
if (! range.containsElement(evt.currentTarget))
return null;
- return handler.apply(thisInHandler || this, arguments);
+ var handlerThis = thisInHandler || this;
+ var handlerArgs = arguments;
+ return Blaze.withCurrentView(view, function () {
+ return handler.apply(handlerThis, handlerArgs);
+ });
},
range, function (r) {
return r.parentRange;
diff --git a/packages/spacebars-tests/template_tests.html b/packages/spacebars-tests/template_tests.html
index bfd11eef8f..d7d715c09d 100644
--- a/packages/spacebars-tests/template_tests.html
+++ b/packages/spacebars-tests/template_tests.html
@@ -922,3 +922,7 @@ Hi there!
{{> bar}}--{{> spacebars_test_isolated_lookup_inclusion}}
+
+
+ {{.}}
+
diff --git a/packages/spacebars-tests/template_tests.js b/packages/spacebars-tests/template_tests.js
index dffe1f750d..655f476f44 100644
--- a/packages/spacebars-tests/template_tests.js
+++ b/packages/spacebars-tests/template_tests.js
@@ -2604,3 +2604,26 @@ _.each([1, 2, 3], function (n) {
}
);
});
+
+Tinytest.add('spacebars-tests - template_tests - current view in event handler', function (test) {
+ var tmpl = Template.spacebars_test_current_view_in_event;
+
+ var currentView;
+ var currentData;
+
+ tmpl.events({
+ 'click span': function () {
+ currentView = Blaze.getCurrentView();
+ currentData = Blaze.getCurrentData();
+ }
+ });
+
+ var div = renderToDiv(tmpl, 'blah');
+ test.equal(canonicalizeHtml(div.innerHTML), 'blah');
+ document.body.appendChild(div);
+ clickElement(div.querySelector('span'));
+ $(div).remove();
+
+ test.isTrue(currentView);
+ test.equal(currentData, 'blah');
+});