【发布时间】:2021-01-02 09:32:34
【问题描述】:
我需要一个 Vue 组件来显示来自 Vuetify 的 v-data-table 中的一些 HTML 内容。我看过这个帖子Vue 2 contentEditable with v-model,我创建了一个类似的代码,如下所示。
我的问题是组件没有反应性。当我点击“测试按钮”时,HtmlTextArea 中没有内容更新。
<template>
<div>
<v-btn @click="doTest()">Test Button</v-btn>
<HtmlTextArea
v-model="content"
style="max-height:50px;overflow-y: scroll;"
></HtmlTextArea>
</div>
<template>
export default {
name: "ModelosAtestados",
components: { HtmlTextArea },
data: () => ({
content: "",
}),
methods: {
doTest() {
this.content = "kjsadlkjkasfdkjdsjkl";
},
},
};
//component
<template>
<div ref="editable" contenteditable="false" v-on="listeners"></div>
</template>
<script>
export default {
name: "HtmlTextArea",
props: {
value: {
type: String,
default: "",
},
},
computed: {
listeners() {
return { ...this.$listeners, input: this.onInput };
},
},
mounted() {
this.$refs.editable.innerHTML = this.value;
},
methods: {
onInput(e) {
this.$emit("input", e.target.innerHTML);
},
},
};
</script>
【问题讨论】:
标签: javascript vue.js