vue中用v-html动态添加的内容不能被vue解析吗?

相关解答

太久没上segmentfault来,这两天登录才看到有朋友在问题下面问具体解决方法,很抱歉之前没有继续关注这个问答,没有及时提供回答。

v-html无法被解析编译的原因下面提供回答的同学也有解释,这里简单提供下用组件解决该问题的方法:

// html部分
<div id="components-demo">

  <test-component :str="str"></test-component>

</div>
// js
Vue.component('test-component', {

  data: function () {

    return {

      inner_html: "this is a test!"

    }

  },

  template: `

    <div>

      <span v-html="inner_html"></span>

      <span>{{str}}</span>

    </div>

  `,

  props: ['str']

})

new Vue({

  el: "#components-demo",

  data: {

    str: "这是一个测试~"

  }

})

题目描述

我在一个页面中用了v-html动态插入新的HTML内容,其中带了vue的数据绑定内容。但是没有解析出来,显示的是{{title}}

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./js/jquery.min.js" type="text/javascript"></script>
<script src="js/vue.min.js"></script>

</head>
<body>

<div id="app">
    <div v-html="inner_html"></div>
</div>

<script>
    var vm = new Vue({
        el: "#app",
        data: {
            title: "这是一个测试"
        },
        methods: {

        },
        mounted: function() {
            this.inner_html = `
                    <div>{{title}}</div>
                `
        },
    });
</script>

</body>
</html>

问题描述

希望达到的效果是页面显示出title的数据(这是一个测试),
但是页面渲染出来的是{{title}}

问题出现的环境背景及自己尝试过哪些方法

尝试过强制重新渲染 this.$forceUpdate() ——但是无效

相关代码

<script>

var vm = new Vue({
    el: "#app",
    data: {
        title: "这是一个测试"
    },
    methods: {

    },
    mounted: function() {
        this.inner_html = `
                <div>{{title}}</div>
            `
            
        this.$forceUpdate()
    },
});

</script>

求大神帮忙解答

阅读 11.7k
2 个回答
更新元素的 innerHTML 。注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译 。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。

v-html

vue是通过html模板触发依赖收集,再代理dataget/set进行更新渲染,所以你是不可能通过v-html添加进去还能监听数据变化的。文档也写了你可以通过使用组件代替。

看一下文档中是这么说的

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题