随便写写 Vue的v-model

#### 自定义组件中定义使用v-model

  ```html

    <Component-A v-model="msg" />

  ```

### 在 vue2.x 中, 在自定义组件中

```javascript

  {

    props: {

      myValue: {

        type: String,

        default: ''

      }

    },

    model: {

      prop: 'myValue',

      event: 'update:myValue'  // 自定义派发的事件名字, emit('update:myValue', newValue)

    }

  }

```

### 在vue3.x 版本中

```javascript

/* 

    在此组件内更新 modelValue 值的时候,

    固定派发事件名称 update:modelValue

*/

{

  props: {

    modelValue: {

      type: String, // 固定prop属性名字

      default: ''

    }

  }

}

```

#### 自定义组件内部同样使用v-model了上面的 modelValue 的值,(自定义组件内部) 

```html

  <Component-B v-model="value" />

```

      

```javascript 

 {

   props: {

    modelValue: {

      type: String, // 固定prop属性名字

      default: ''

    }

  },

  computed: {

    value: {

      get() {

        return this.modelValue

      },

      set(value) {

        this.$emit('update:modelValue', value);

      }

    }

  }

 }

```

### 自定义组件定义多个v-model

```html

  <Component-C 

      v-model:value="value"

      v-model:title="title"

  />

```

```javascript

{

  props: {  // 在它们需要更新数据时候 派发事件 emit('update: propName', newValue)

    value: {

      type: String,

      default: ''

    },

    title: {

      type: String,

      default: ''

    }

  }

}

```

---

#### 另一种效果类似v-model的

- 父组件中

  ```html

    <Component-B :value.sync="msg" />

  ```

ComponentB:

```javascript

export default {

        name: 'ComponentB',

         props: {

                value: {

                        type: String,

                        default: ''

                }

        }

// 当 value 属性的值要更新的时候

// this.$emit('update:msg': newValue)  即可

}

``` 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值