在Vue 3中,v-model 指令通常用于表单输入元素(如 <input>、<textarea> 等),但不适用于 contenteditable="true" 的div 元素。为了实现类似 v-model 的效果,你可以创建一个自定义指令或组件来处理 contenteditable 的输入事件,并实现数据的双向绑定。 以下是分步骤的解决方案: 1. 创建一个Vue 3...
代码如下: <template> </template> export default { props: ["value"], data(){return {innerText:this.value} }, methods:{changeText(){this.innerText = this.$el.innerHTML;this.$emit("input",this.innerText);} } } 然后在父组件中直接使用 v-model 就可以了(这里我把组件名称定义成了 v-edit-...
(1)通过打断点可以看到,当你输入的时候触发input事件,提交值给父组件中的v-model; (2)但因为在子组件中又监听了v-model的值,所以整体形成了闭环; (3)还需要重点说明的是光标问题,contenteditable与v-html所在的元素值的改变如果不是通过输入而是通过赋值实现,光标就会跑到最前面; 所以以输入中文为例,你刚打了一...
canEdit标志这个div是否是可编辑的,在父组件直接使用v-model即可。
在项目中会遇到需要编辑单元格的双向绑定问题,v-model双向绑定会在添加contenteditable="true"属性后失效 解决方法如下,亲测好用(v-html和@blur实现):
在vue2 中对表单控件有着良好的双向数据绑定机制,但是对于要特定实现某些功能的输入时,我们就不得不使用到 contenteditable="true" 的 div ,而在这个 div 上是使用 v-model 是没有效果的。那么问题就来了,输入是非常需要双向绑定的,这里的双向数据绑定该如何实现?
在 vue2 中对表单控件有着良好的双向数据绑定机制,但是对于要特定实现某些功能的输⼊时,我们就不得不使⽤到contenteditable="true" 的 div ,⽽在这个 div 上是使⽤ v-model 是没有效果的。那么问题就来了,输⼊是⾮常需要双向绑定的,这⾥的双向数据绑定该如何实现?解决思路⼀:⾃定义指令 ...
失效。。。在项⽬中会遇到需要编辑单元格的双向绑定问题,v-model双向绑定会在添加contenteditable="true"属性后失效 解决⽅法如下,亲测好⽤(v-html和@blur实现): 完美好⽤!
($event)" @paste="optimizePasteEvent" v-html="content" /> </template> export default { props: { placeholder: { type: String, default: '请输入内容' }, value: { type: String, default: '' }, contenteditable: { type: String, default: 'true' } }, data() { return { content: ...
在vue2 中对表单控件有着良好的双向数据绑定机制,但是对于要特定实现某些功能的输入时,我们就不得不使用到 contenteditable="true" 的 div ,而在这个 div 上是使用 v-model 是没有效果的。那么问题就来了,输入是非常需要双向绑定的,这里的双向数据绑定该如何实现?