Vue:自定义v-model数据双向绑定

简介: Vue:自定义v-model数据双向绑定

示例

age 数据单向绑定

name 数据双向绑定


<template>
    <div>
        <h3>单向绑定数据</h3>
        <p>age: {
        { age }}</p>
        <p>age: <input type="text" :value="age"></p>
        
        <h3>双向绑定数据</h3>
        <p>name: {
        {name}}</p>
        <p>name: <input type="text" :value="name" @input="name=$event.target.value"></p>
    </div>
</template>


<script>
export default {
    data(){
        return {
            age: 23,
            name: "王小二"
        }
    }
}

</script>

d23.2.png


观察代码发现,name的input 多了一个事件绑定@input="name=$event.target.value"

所以,实现数据双向绑定的原理就是:

1、数据name单向传递给input;

2、input触发事件后将name的值进行了修改

自定义v-model双向绑定

child.vue

<template>
<input type="text" :value="age" @input="change($event.target.value)">
</template>


<script>
export default {
props: ["age"],

model: {
prop: "age", // 对应的变量
event: "change" // 触发事件
},

methods: {
// 把修改后的值传递回去
change(value){
console.log(value)
this.$emit('change', value)
}
}
}

</script>


main.vue

<template>
<div>
<h3>子组件v-model示例</h3>

<p>age: { {age}}</p>

<p>age: <Child v-model="age"/></p>
</div>
</template>


<script>
import Child from './child.vue';

export default {
components: {
Child
},

data(){
return {
age: 23,
}
}
}

</script>

启动调试

$ vue serve main.vue

d23.3.png


这样就实现了自定义v-model语法

原理很简单

1、父组件给子组件传值
2、子组件值修改,触发事件修改父组件值
3、父组件再将新值传递给了子组件,子组件的接收到父组件变更的值

所以还是数据还是单向流动

参考:

  1. Vue之自定义组件的v-model
  2. vue自定义组件上的v-model如何与子组件数据绑定
            </div>
目录
相关文章
|
7月前
|
存储 JavaScript 前端开发
Vue中v-model双向数据绑定
Vue中v-model双向数据绑定
43 0
|
11天前
|
JavaScript 前端开发 API
Vue中v-model的原理
Vue中v-model的原理
|
2月前
|
JavaScript
Vue中的v-model如何实现一个自定义组件的双向绑定?
Vue中的v-model如何实现一个自定义组件的双向绑定?
25 2
|
3月前
|
JavaScript 开发者
Vue中v-model的原理是什么?
Vue中v-model的原理是什么?
20 0
|
4月前
|
JavaScript
【双向绑定极简版代码】在Vue.js的自定义组件中实现v-model=“”双向绑定
【双向绑定极简版代码】在Vue.js的自定义组件中实现v-model=“”双向绑定
|
4月前
|
JavaScript
【Vue】—数据的双向绑定v-model
【Vue】—数据的双向绑定v-model
|
5月前
|
JavaScript 前端开发
Vue系列教程(10)- Model数据内容双向绑定(v-model)
Vue系列教程(10)- Model数据内容双向绑定(v-model)
70 0
|
8月前
|
JavaScript
[Vue]v-model收集表单数据
[Vue]v-model收集表单数据
|
8月前
|
JavaScript
Vue 自定义组件实现 v-model 数据双向绑定
Vue 自定义组件实现 v-model 数据双向绑定
89 0
|
9月前
|
JavaScript 前端开发 UED
如何在 Vue 自定义组件中正确使用 v-model 进行数据的双向绑定?
如何在 Vue 自定义组件中正确使用 v-model 进行数据的双向绑定?
165 0