我试图传递给我的模板的数据在得到下划线的template renderer时会被莫名其妙地忽略。
数据可用:
但是我在控制台中得到一个异常,即参数url
未定义:
未捕获的ReferenceError:未定义url
如果我钻得更深,我会看到一些看起来很疯狂的javascript:
它在以下后立即失败:__p+='\n\t\t<a href="#'+
(通知url
和label
仍在定义中。)
答案 0 :(得分:1)
通常在编译的模板中会有with(obj||{})
。我没有看到你的一个,所以也许variable
option正在某处使用:
默认情况下,模板会通过
with
语句将数据中的值放在本地范围内。但是,您可以使用变量设置指定单个变量名称。
例如,如果您:
var t = _.template('<%= x %>');
然后查看t.source
,您会看到这样的函数(为清晰起见而格式化):
function(obj){
//...
with(obj||{}){
//...
}
return __p;
}
但如果你说:
var t = _.template('<%= x %>', null, { variable: 'E' });
并查看t.source
,您将看到相同的结构没有围绕函数内容的with
块。
演示:http://jsfiddle.net/ambiguous/jrEub/
模板功能的结构表明您在某个地方{variable: 'E'}
,因此您的模板应该<% E.url %>
,而不仅仅是<% url %>
。