【问题标题】:html tags surrounded with " " not rendering用“”包围的html标签不呈现
【发布时间】:2017-09-07 10:26:07
【问题描述】:

当我在 chrome 中使用开发工具进行检查时,我在我的页面中得到了这个

<span>
 "<b> test data </b>"
</span>

html 标签不是这样工作的。我怎样才能修改这个字符串,以便 html 标签可以工作。数据 "&lt;b&gt; test data &lt;/b&gt;" 来自 $.Ajax 请求到服务器。 &lt;b&gt; 标签未呈现,我得到的是纯文本。

        var v = new Vue({
    el: ..,
    data : {
        rows: []
    },
    mounted: function() {
     var self = this;
    $.ajax({
           type: 'POST',
           url:  ...,
           data: {},
         contentType: 'application/json; charset=utf-8',
        dataType : 'json',
        success : function(data) {
          var json_data = JSON.parse(data.d);
         self.rows=json_data
        },
        error: function() {}
        })
}
})

我正在迭代数据如下

<tr v-for= "row in rows">
  <td>{{row.question}}</td>
<tr>

更新

这似乎对我有用。谁能告诉我这段代码是否有效?

<tr v-for ="row in rows">
  <td> <span v-html="row.question"></span></td>
</tr>

谢谢

【问题讨论】:

  • 那么你目前得到了什么结果,你想要什么结果?
  • 标签没有呈现,我得到的是纯文本。 标签应该可以工作
  • 你能console.log 来自ajax 调用的原始数据确保它不是来自服务器吗?您使用的是$e.html(data) 还是$e.text(data)
  • 你能显示你正在使用的 ajax 调用吗?
  • 您更新的代码是有效的。您也可以将v-html 放在td 本身上,而不是span

标签: javascript html string tags vue.js


【解决方案1】:

如果它来自服务器,并且您使用 javascript 将其添加到 DOM,您需要设置 innerHTML,因为它会将其视为 DOM 对象。如果你设置了span innerText,它将把它当作一个字符串,标签将无法正确呈现。

【讨论】:

    【解决方案2】:

    双胡须将数据解释为纯文本,而不是 HTML。在 为了输出真正的 HTML,你需要使用the v-html directive

    【讨论】:

    • 如何将 v-html 与 v-for 一起使用?
    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2019-03-02
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多