Fixes #372 -- preserve dynamic scope for _.template functions.

This commit is contained in:
Jeremy Ashkenas
2011-11-23 10:40:08 -05:00
parent 8c346141dc
commit 65d5d60bfa
2 changed files with 10 additions and 1 deletions

View File

@@ -93,6 +93,12 @@ $(document).ready(function() {
var result = template({value: "<script>"});
equals(result, '<i>&lt;script&gt;</i>');
var stooge = {
name: "Moe",
template: _.template("I'm <%= this.name %>")
};
equals(stooge.template(), "I'm Moe");
if (!$.browser.msie) {
var fromHTML = _.template($('#template').html());
equals(fromHTML({data : 12345}).replace(/\s/g, ''), '<li>24690</li>');

View File

@@ -915,7 +915,10 @@
.replace(/\t/g, '\\t')
+ "');}return __p.join('');";
var func = new Function('obj', '_', tmpl);
return data ? func(data, _) : function(data) { return func(data, _) };
if (data) return func(data, _);
return function(data) {
return func.call(this, data, _);
};
};
// The OOP Wrapper