搜尋

首頁  >  問答  >  主體

javascript - vue將字串轉為html

let str = "<img :src=('face[k].src)>"
this.commentList[i].Content = this.commentList[i].Content.replace(sArr[j], str)

需求是將str裡面的字串轉成html輸出,這個img是表情來的,偵測回傳content是否包含表情,然後替換,如果我這樣輸出的話只是字串,請問如何轉換成html呢?用eval()方法好像不支援

为情所困为情所困2747 天前816

全部回覆(5)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-19 10:33:46

    如下,應該在取得到資料之後修正 Content 為 html, 並使用 v-html 指令綁定:

    <template>
        <ul v-for="item in commentList">
            <li>
                <p v-html='item.Content'></p>
            </li>
        </ul>
    </template>
    
    <script>
        export {
            data() {
                return {
                    commentList: []
                }
            },
            created() {
                this.$http.get('api/get-commentlist?article_id=1').then((res) => {
                    res = res.body
                    res.list.forEach((item, i) => {
                        // sdfsafs[face-1]sad[face-2] 
                        // 将被替换为 
                        // sdfsafs<img src="face-1.jpg">sad<img src="face-2.jpg">
                        // ,请自行根据需要修改
                        item.Content = item.Content.replace(/\[face\-(\d+)\]/g, '<img src="face-.jpg">')
                    })
                    this.commentList = res.list
                })
            }
        }
    </script>
    

    --- 補充 ---

    其中 .replace() 方法的第二個參數也支援使用函數返回,即能實現更複雜的替換,如:

    item.Content = item.Content.replace(/\[(.+)\]/g, function(word, ){
      return '<img src="/static/img/'+ this.face[].src +'" />'
    })

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:33:46

    v-html?

    回覆
    0
  • 天蓬老师

    天蓬老师2017-05-19 10:33:46

    建議使用v-if更好

    回覆
    0
  • 迷茫

    迷茫2017-05-19 10:33:46

    原生的用innerHTML,jq用html();

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:33:46

    沒有人遇到同樣的問題嗎~

    回覆
    0
  • 取消回覆