javascript - 尝试在模板内呈现 html 内容时遇到问题

标签 javascript lodash

具有以下 lodash 模板源

<script id="resume-template" type="text/html">
    <tr>
        <td>Curriculum</td>
        <td>
            <%= _.unescape(resume.curriculum) %>
        </td>
    </tr>
</script>

并且具有以下上下文

const context = {
    resume: {
        email: '...',
        firstName: '...',
        lastName: '...',
        curriculum: "&amp;lt;p&amp;gt;some important information goes here&amp;lt;/p&amp;gt;\r\n&amp;lt;p&amp;gt;unordered list&amp;lt;/p&amp;gt;\r\n&amp;lt;ul&amp;gt;\r\n&amp;lt;li&amp;gt;item1&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;item2&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;item3&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;item4&amp;lt;/li&amp;gt;\r\n&amp;lt;/ul&amp;gt;\r\n&amp;lt;p&amp;gt;ordered list&amp;lt;/p&amp;gt;\r\n&amp;lt;ol&amp;gt;\r\n&amp;lt;li&amp;gt;pet1&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;pet2&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;pet3&amp;lt;/li&amp;gt;\r\n&amp;lt;li&amp;gt;pet4&amp;lt;/li&amp;gt;\r\n&amp;lt;/ol&amp;gt;\r\n&amp;lt;p&amp;gt;Some &amp;lt;span style=&amp;quot;text-decoration: line-through;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;other&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;information&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;text-decoration: line-through;&amp;quot;&amp;gt;goes&amp;lt;/span&amp;gt; &amp;lt;strong&amp;gt;here&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;"
    }
}

以及以下实现

const app = document.querySelector('#app');
const resume = response; // ajax response
const source = document.querySelector('#resume-template').innerHTML;
const template = _.template(source);

app.innerHTML = template(resume);

我需要将resume.curriculum键的内容呈现为html,为了实现此目的,我首先对resume.curriculum内容进行转义<%= _.unscape(resume.curriculum) %> ,但我没有获取 html,而是获取 html 标签及其内容作为文本

作为帮助,如果在模板中我放置以下内容 <%= '<p><i>Some content</i></p>' %>适本地呈现为 html

感谢您为解决此情况提供的任何帮助

enter image description here

最佳答案

在服务器端代码中的某个位置,您对 curriculum 字段进行了双重转义。看到这个 block :

&amp;lt;p&amp;gt;some important information goes here&amp;lt;/p&amp;gt;

应该是:

&lt;p&gt;some important information goes here&lt;/p&gt;

所以,修复你的服务器端代码,你就会看到你的东西开始工作。要验证这一点,只需更改以下内容:

<td>
  <%= _.unescape(resume.curriculum) %>
</td>

至:

<td>
  <%= _.unescape(_.unescape(resume.curriculum)) %>
</td>

关于javascript - 尝试在模板内呈现 html 内容时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50805610/

相关文章:

javascript - 缩放网页内容上的特定元素(HTML、CSS、JavaScript)

javascript - Flotplothover 在右下角不起作用

javascript - 如何使用lodash来统计这个容器中有多少个标签对象?

reactjs - 如何使用 Lodash 和 Normalizr 处理我的 redux 存储?

javascript - 为什么 Lodash 包装器不适用于 forEach?

javascript - .delay() 一个 .css() Action 乘以一个索引号

javascript - 为什么我的 vue.js 按钮不创建新的文本区域?

typescript - 如何使用 webpack 在 angular2 应用程序中使用 lodash 解决错误 "Cannot find name ' _' "

javascript向时间对象添加一分钟

javascript - 将 lodash 的 pickby 转换为 javascript