网站设计制作中心,开发php网站开发,南京外贸网站建设,劳务公司起名字大全免费v-model
v-model就实现了双向数据绑定#xff0c;实际上它就是通过Vue提供的事件机制。即在子组件通过$emit()触发一个事件#xff0c;在父组件使用v-on来监听对应的事件并修改相应的数据。 input的v-model就是通过input :valuevalue inputinput实际上它就是通过Vue提供的事件机制。即在子组件通过$emit()触发一个事件在父组件使用v-on来监听对应的事件并修改相应的数据。 input的v-model就是通过input :valuevalue inputinput/
封装一个input组件v-model实现
两个注意点
假设不是使用的value属性和input事件而是使用string属性和strChange事件。通过mode属性设置 爷父孙组件父组件通过computed实现
// 父组件
my-input v-modelvalue/my-input// my-input子组件组件
template!-- 2. 监听 input 事件的出发 --div classinput contenteditable inputinput/div
/templatescript
export default {// 1. 接受父级传递的值props: {value: {type: String,default: }},methods: {// 3. 编写 input 事件触发执行的事件处理函数input (event) {// 4. $emit input 事件并将 event.target.innerText 作为参数this.$emit(input, event.target.innerText)}}
}
/script原生实现数据双向绑定
bodyspan idtext/spaninput idvalue /
/body
script
window.onload function() {let input document.getElementById(value)let text document.getElementById(text)let data { value: }input.value data.valuetext.innerHTML data.value// 数据劫持Object.defineProperty(data, value, {set: function (val) {input.value valtext.innerHTML val},get: function () {return input.value}})input.addEventListener(keyup, function (){data.value input.value})
}
/script