美文网首页
vue2.0和vue3.0v-model使用对比

vue2.0和vue3.0v-model使用对比

作者: 糖小羊儿 | 来源:发表于2021-01-06 10:01 被阅读0次

我们在写项目的时候,经常自定义组件,并且需要传参,刚好v-model是一个双向绑定,所以我们会把v-model的思想使用到各个自定义组件中

在vue2.0中,v-model只能对应一个变量

在vue3.0中,在v-model原来的使用基础上,拓展了多对多的使用方式


1.vue2.0 

父组件引入子组件hello,并且传参给子组件,代码如下:

<template>

  <div class="home">

    <h1>{{username}}</h1>

    <hello v-model="username"></hello>

  </div>

</template>

<script>

import hello from "@/components/HelloWorld.vue";

export default {

  components:{hello},

  data(){

    return{

      username:'小明',

    }

  },

};

</script>

子组件定义一个input,用来接收父组件的参数,并且实现数据双向绑定,代码如下:

<template>

  <div class="hello">

    <input :value="value" @input="inputChange"/>

  </div>

</template>

<script>

export default {

  props:['value'],

  methods:{

    inputChange(e){

      this.$emit('input',e.target.value);

    }

  },

}

</script>

2.vue3.0

父组件引用子组件hello,并且使用v-model给子组件传递三个参数,并且同时实现这三个参数双向绑定 

父组件代码如下:

<template>

  <div class="home">

    <h1> {{username}}</h1>

    <h1> {{age}}</h1>

    <h1> {{score}}</h1>

    <hello v-model:username="username" v-model:age="age" v-model:score="score"></hello>

  </div>

</template>

<script>

import Vue from "vue";

import hello from "@/components/HelloWorld.vue";

export default {

  components:{hello},

  data(){

    return{

      username:'小明',

      age:18,

      score:87,

    }

  },

};

</script>

子组件代码如下:

<template>

  <div class="hello">

    <input :value="username" @input="changeInput($event,'username')"/>

    <input :value="age" @input="changeInput($event,'age')"/>

    <input :value="score" @input="changeInput($event,'score')"/>

  </div>

</template>

<script>

export default {

  props:['username','age','score'],

  methods:{

    changeInput(e,type){

      this.$emit('update:'+type,e.target.value);

    },

  },

}

</script>

相关文章

网友评论

      本文标题:vue2.0和vue3.0v-model使用对比

      本文链接:https://www.haomeiwen.com/subject/hoqnoktx.html