将html标签传递为ejs变量'值

时间:2014-08-07 07:54:11

标签: javascript html node.js ejs

我使用Koa Framework和EJS模板来渲染视图。我需要向视图发送一些html元素值。但是ejs库正在将它们转换为html实体。我跟踪他们在https://www.npmjs.org/package/koa-ejs

中的讲话方式

在我的js文件中:

yield this.render('ejs file name', {
  a: 'hi',
  b: '<a href="hi">hi</a>'
});

我的观点文件:

<%=a %>
<%=b %>

运行代码后我得到了什么:

hi
&lt;a href="hi"&gt;hi&lt;/a&gt;

但我需要<a href="hi">hi</a>作为值&lt;a href="hi"&gt;hi&lt;/a&gt;

有没有人有任何建议如何?

2 个答案:

答案 0 :(得分:1)

通过手动检查模块的代码找到解决方案。默认情况下,ejs模块将转义值。为了防止它,我们需要将自己的转义函数发送到模块,该模块将覆盖现有的。

yield this.render('ejs file name', {
  a: 'hi',
  b: '<a href="hi">hi</a>',
  escape: function(html) {
    return String(html);
    // don't replace the htmls
    //.replace(/&/g, '&amp;')
    //.replace(/</g, '&lt;')
    //.replace(/>/g, '&gt;')
    //.replace(/'/g, '&#39;')
    //.replace(/"/g, '&quot;');
  }
});

答案 1 :(得分:0)

要使用文本编辑器(尽管我使用tinyMCE)处理EJS和Node JS,只需将标签调用到此<%- <YOUR-VARAIABLE-NAME> %>中,即可剥离所有标签并完美呈现文本。