Javascript 下划线.js模板呈现

Javascript 下划线.js模板呈现,javascript,backbone.js,underscore.js,underscore.js-templating,Javascript,Backbone.js,Underscore.js,Underscore.js Templating,我有这个示例代码,可以使用下划线模板呈现简单的unescapedHTML var template = $(this.el).html(_.template(this.template, {'data': '<script>'})); $(this.parent).append(template); 但当它尝试渲染时,会导致错误: 未捕获的TypeError:对象[Object Object]没有方法“replace” 有谁能告诉我原因是什么以及如何解决?因为在下划

我有这个示例代码,可以使用下划线模板呈现简单的unescapedHTML

var template = $(this.el).html(_.template(this.template, {'data': '<script>'}));
$(this.parent).append(template);
但当它尝试渲染时,会导致错误:

未捕获的TypeError:对象[Object Object]没有方法“replace”

有谁能告诉我原因是什么以及如何解决?因为在下划线文档中:

var template = _.template("<b>&lt;%- value %></b>");
template({value : '&lt;script&gt;'});
=> "<b>&lt;script&gt;</b>"
var-template=..template(“%-value%>”);
模板({value:'script'});
=>“脚本”
提前感谢。

来自:

模板
模板(templateString,[context])

将JavaScript模板编译成可以进行渲染评估的函数

\uU4.template
的第一个参数应该是字符串,而不是jQuery对象。
的内部处理的一部分。模板
调用函数,这就是错误的来源。您可能希望改用此选项:

var template = $(this.el).html(_.template(this.template.html(), {'data': '<script>'}));
$(this.parent).append(template);
var-template=$(this.el).html(u.template(this.template.html(),{'data':'''}));
$(this.parent).append(模板);
演示:

你举的例子很好:


因此,我不知道“值”未定义的位置您在评论中提到的错误可能来自哪里。

我在服务器上运行node时遇到了相同的错误。如果从磁盘读取模板文件,但未指定编码,则node.js将返回一个缓冲区。错误基本相同,因为下划线需要字符串。确保指定了编码,以便将字符串传递给下划线

这将产生错误

var template = _.template(fs.readFileSync('mytemplate.tpl'));
这很好

var template = _.template(fs.readFileSync('mytemplate.tpl', { 'encoding':'utf8'}));

这个模板是什么?字符串或DOM或jQuery对象?是的,它的jQuery对象。另外,当我试图使用下划线文档中的示例时,它也会抛出错误:“value”未定义,尽管我用字符串将其括起来。