Vue v-html用法

如果我們從服務器端獲取到了HTML字符串,用瀏覽器顯示出來。在Vue框架下,可以用v-html指令來做。例如:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>vue demo</title>
</head>

<body>
<script src="./vue.js"></script>
<div id="app">
    <div v-html="hello"></div>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: function () {
            return {
                hello: "<html>\n" +
                    "<head>\n" +
                    "    <style type=\"text/css\">\n" +
                    "        #app{\n" +
                    "            width: 600px;\n" +
                    "            height: 600px;\n" +
                    "            background-color: green;\n" +
                    "            margin: auto;\n" +
                    "            color: red;\n" +
                    "            text-align: center;\n" +
                    "            font-size: 60px;\n" +
                    "        }\n" +
                    "    </style>\n" +
                    "</head>\n" +
                    "<body>\n" +
                    "<div id=\"app\">hello world</div>\n" +
                    "</body>\n" +
                    "</html>\n"
            }
        },
    })
</script>
</body>
</html>

模板編譯後的匿名函數爲:

function anonymous(
) {
with(this){return _c('div',{attrs:{"id":"app"}},[_c('div',{domProps:{"innerHTML":_s(hello)}})])}
}

從匿名函數中可以看出,v-html指令解析成了innerHTML。所以在節點元素上直接用innerHTML也是可以的,例如:

<html>
<head>
</head>
<body>
<div id="app"></div>
<script>
    document.getElementById('app').innerHTML = "<html>\n" +
        "<head>\n" +
        "    <style type=\"text/css\">\n" +
        "        #app{\n" +
        "            width: 600px;\n" +
        "            height: 600px;\n" +
        "            background-color: green;\n" +
        "            margin: auto;\n" +
        "            color: red;\n" +
        "            text-align: center;\n" +
        "            font-size: 60px;\n" +
        "        }\n" +
        "    </style>\n" +
        "</head>\n" +
        "<body>\n" +
        "<div id=\"app\">hello world</div>\n" +
        "</body>\n" +
        "</html>\n"
</script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章