相关解答
太久没上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>
v-html
vue
是通过html
模板触发依赖收集,再代理data
中get/set
进行更新渲染,所以你是不可能通过v-html
添加进去还能监听数据变化的。文档也写了你可以通过使用组件代替。