【发布时间】:2020-01-06 22:31:19
【问题描述】:
我正在制作一些网络功能。但我有一个问题。 我想创建几个使用 v-html 添加 vue 指令的 html 结构,但我做不到。 那么,如何使用 v-html 渲染 vue 指令?
当然我知道这会导致 xss 漏洞,但我会过滤任何关键标签,所以我不在乎。
请分享您的建议!
我已经使用了 Vue.compile 函数。但是,它只支持完整构建,这与我的情况不匹配。
<button @click="go()">go</button>这就是我想用 v-html 做的。 但是@click指令没有被渲染...
这是App.vue结果
但是go按钮不能调用go函数。
App.vue
<template>
<div id="app">
<input type="text" v-model="name" />
<p v-html="name"></p>
<!-- Below tag is what i want to make using v-html -->
<!-- <button @click="go()">gogo</button> -->
</div>
</template>
<script>
// import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'app',
data:function(){
return {
name:'',
}
},
methods:{
go(){
alert('hi');
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
【问题讨论】:
-
您只需要事件侦听器,还是在您的
v-html中需要其他 Vue 语法部分? -
试试
v-on类似v-on="{click: go()}" -
@skirtle 我想使用更多指令,而不仅仅是
v-onv-html中的事件监听器 :) -
@Michael 感谢您分享提示!但是
<button v-on="{click: go()}">go</button>也没有工作:,( -
如果我理解的话,你会将动态 Vue 模板 '' 放在名称 var 中,然后渲染它?
标签: javascript html vue.js vuejs2