我正在使用jQuery,jQueryMobile和下划线模板制作应用程序,但我从未遇到过此错误,我找不到模板中发生的变量:
self.$list = $("#list");
var template = _.template('<%= foo %>', {foo: 'hello'});
self.$list.html(template);
错误:ReferenceError:未定义foo
这是一个例子,如果我尝试渲染类别列表,我感觉相同。
_.each(categories, function(category){
console.log(category); //<-- ok
var template = _.template(self.$categoryTemplate.text(), category);
self.$list.append(template);
});
categoryTemplate:
<script id="category-template" type="text/template">
<li><a href="#"><% = name %></a></li>
</script>
我不明白为什么你没有在模板中看到变量
答案 0 :(得分:2)
调用_.template
会返回一个函数,该函数将带有模板变量的对象作为第一个参数。
所以你应该这样做:
self.$list = $("#list");
var template = _.template('<%= foo %>')({foo: 'hello'});
self.$list.html(template);
和此:
_.each(categories, function(category){
console.log(category); //<-- ok
var template = _.template(self.$categoryTemplate.text())(category);
self.$list.append(template);
});