Underscore.js 模板渲染
我有这个示例代码,可以使用下划线模板呈现简单的 unescapedHTML。
var template = $(this.el).html(_.template(this.template, {'data': '<script>'}));
$(this.parent).append(template);
但是当它尝试渲染它时,它导致了错误:
未捕获类型错误:对象 [object Object] 没有方法“替换”
任何人都可以告诉我原因是什么以及如何解决它吗?由于在下划线文档中:
var template = _.template("<b><%- value %></b>");
template({value : '<script>'});
=> "<b><script></b>"
提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自精细手册:
_.template
的第一个参数应该是一个字符串,而不是一个 jQuery 对象。_.template
的部分内部处理调用String#replace
函数,这就是您的错误的来源。您可能想改用它:演示:http://jsfiddle.net/ambigously/wPu6G/
您给出的示例效果很好:
所以我不知道 “值”未定义您在评论中提到的错误可能来自。
From the fine manual:
The first argument for
_.template
is supposed to be a string, not a jQuery object. Part of the internal processing for_.template
calls theString#replace
function and that's where your error comes from. You might want to use this instead:Demo: http://jsfiddle.net/ambiguous/wPu6G/
The example you give works just fine:
So I don't know where the 'value' is not defined error you mention in your comment could be coming from.
我在服务器上运行节点时遇到了同样的错误。如果您从磁盘读取模板文件并且未指定编码,则 node.js 将返回一个缓冲区。错误基本上是相同的,因为 Underscore 需要一个字符串。确保指定编码,以便将字符串传递给 Underscore。
这会产生错误。
这很好。
I just hit the same error while running node on the server. If you read the template file from disk and you don't specify the encoding then node.js will return a buffer. The error is basically the same because Underscore expects a string. Make sure that you specify an encoding so that you are passing a string to Underscore.
this will produce the error.
and this is good.