vue中div模拟文本编辑器并且实现v-model功能


说明一下实现div模拟文本编辑器实现v-model数据的双向绑定而不用input的原因 因为div使用v-html绑定的数据中是可以嵌套标签的列入 使用v-html进行数据的绑定自定义的标签并不会被过滤掉。

v-model 是 Vue 框架提供的众多指令中的一个,其主要作用是可以实现在表单 <input>、<textarea> 及 <select> 标签元素上创建双向数据绑定。但是当我们但是当我们使用div添加contenteditable="true"属性实现编辑的功能并不能绑定v-model实现数据的双向绑定

<body>
	<div class="" id="vue-template" >			
		<li v-for="(site, i) in testContent">
			<div class="div-editable" contenteditable="true" v-html="testContent[i]" @input="changeText(testContent[i]=$event.target.innerHTML)"></div>
		</li>
		<input>
	</div>
</body>
<script type="text/javascript">	
//当然实现这种div模拟v-model的方法你也可以直接使用组建,组建是可以使用v-model的
var app = new Vue({
			el: '#vue-template',
			data:{
				testContent: ['dreams<span class="heightLight">qin1</span>','dreamsqin3','dreamsqin4'],
				innerText:this.testContent,
				isChange: true,
			},
			watch: {
			  value() {
				  console.log(12321)
				if (this.isChange) {
				  this.innerText = this.value
				  console.log(1111)
				  console.log(this.value)
				}
			  }
			},
			methods: {
			  changeText(e) {
				console.log(this.testContent)
			  },
			  blurFunc() {
				this.isChange = true
				this.$emit('blurFunc')
			  },
			},
		})
</script>
//当你输入的时候可以发现输出的结果中data的数据已经发生了改变


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM