发现问题

在 vue2 中对表单控件有着良好的双向数据绑定机制,但是对于要特定实现某些功能的输入时,我们就不得不使用到 contenteditable="true" 的 div ,而在这个 div 上是使用 v-model 是没有效果的。那么问题就来了,输入是非常需要双向绑定的,这里的双向数据绑定该如何实现?
解决思路一:自定义指令
当然,说在这一段的前面,这种解决方式在 vue2 中是不行的,为什么这么说,因为现在去搜索这个问题绝大多数的搜索结果是这个,所以放在前面。
实现的原理以及为什么不能用了
原理:自定义一个双向数据绑定的指令,代码如下:
Vue.directive('demo', {
twoWay: true,
bind: function () {
this.handler = function () {
this.set(this.el.innerHTML)
}.bind(this)
this.el.addEventListener('input', this.handler)
},
update: function (newValue, oldValue) {
this.el.innerHTML = newValue || ''
},
unbind: function () {
this.el.removeEventListener('input', this.handler)
}
})
至于 this 下的这些方法,在 vue 官网上可能不太容易找到,因为这些是 vue1 中的内容,而在 vue2 中已经被移除了。所以在 vue2 中我们是不能这么干的,当然如果你使用的是 vue1 那么完全没问题,直接拿去用即可。
解决思路二:使用组件
单独声明一个组件,在组件内部处理数据(也就是innerHTML),并将数据返回给父组件。
代码如下:
<template>
<div contenteditable="true"
v-html="innerText"
@input="changeText"></div>
</template>
<script>
export default {
props: ['value'],
data(){
return {innerText:this.value}
},
methods:{
changeText(){
this.innerText = this.$el.innerHTML;
this.$emit('input',this.innerText);
}
}
}
</script>
然后在父组件中直接使用 v-model 就可以了(这里我把组件名称定义成了 v-edit-div)。
<template>
<div>
<v-edit-div v-model='text'></v-edit-div>
<span>{{text}}</span>
</div>
</template>
<script>
export default {
data(){
return {
text:'改一下试一试',
}
}
}
</script>
至于为什么可以直接用 v-model ,看官网的 API 吧。
v-model 传送门
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# vue
# contenteditable
# vue.js
# v
# model
# 在Vue2中v-model和.sync区别解析
# vue2和vue3组件v-model区别详析
# Vue2子组件绑定 v-model
# 实现父子组件通信方式
# vue2中如何自定义组件的v-model
# Vue v-model相关知识总结
# vue2 v-model/v-text 中使用过滤器的方法示例
# vue 2.0组件与v-model详解
# Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
# vue2与vue3双向数据绑定的区别说明
# vue 2 实现自定义组件一到多个v-model双向数据绑定的方法(最新推荐)
# 绑定
# 而在
# 自定义
# 的是
# 如果你
# 来了
# 成了
# 放在
# 在这
# 不太
# 这个问题
# 我把
# 用了
# 并将
# 可以直接
# 该如何
# 这篇文章
# 表单
# 中对
# 拿去
相关文章:
c++ stringstream用法详解_c++字符串与数字转换利器
Swift开发中switch语句值绑定模式
如何获取免费开源的自助建站系统源码?
,有什么在线背英语单词效率比较高的网站?
存储型VPS适合搭建中小型网站吗?
如何批量查询域名的建站时间记录?
招商网站制作流程,网站招商广告语?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何在云主机上快速搭建网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何在建站之星绑定自定义域名?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何通过VPS建站实现广告与增值服务盈利?
宝塔Windows建站如何避免显示默认IIS页面?
如何在新浪SAE免费搭建个人博客?
济南网站制作的价格,历城一职专官方网站?
建站与域名管理如何高效结合?
魔方云NAT建站如何实现端口转发?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何高效完成自助建站业务培训?
广州营销型建站服务商推荐:技术优势与SEO优化解析
建站之星Pro快速搭建教程:模板选择与功能配置指南
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
如何在云主机快速搭建网站站点?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何获取开源自助建站系统免费下载链接?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
已有域名和空间如何快速搭建网站?
如何在云服务器上快速搭建个人网站?
如何构建满足综合性能需求的优质建站方案?
如何快速上传自定义模板至建站之星?
建站主机是否属于云主机类型?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
内部网站制作流程,如何建立公司内部网站?
建站主机是否等同于虚拟主机?
建站之星各版本价格是多少?
高端云建站费用究竟需要多少预算?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
如何通过服务器快速搭建网站?完整步骤解析
微课制作网站有哪些,微课网怎么进?
如何快速搭建虚拟主机网站?新手必看指南
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何在自有机房高效搭建专业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。