vue

你知道v-model的原理吗?说说看

发布于 2021-01-11 17:11:48
关注者
0
被浏览
1298
6 个回答
  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    v-model只不过是一个语法糖而已,真正的实现靠的还是

    • v-bind:绑定响应式数据

    • 触发 input 事件 并传递数据 (核心和重点)

  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    v-model是个语法糖:
    v-bind:value="value"
    v-on:input="e => value = e.target.value"
    因为V-model并不仅限于Form表单, 目前还支持更改事件名称和变量名称
    model: {
    prop: 'checked',
    event: 'change'
    }

  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    原生input其实只是一个语法糖,:bind="value"与@change="value = $event.target.value"的结合。
    自定义组件的时候的v-model默认监听change事件和绑定value 的prop。

    v-model是默认使用组件的valueprop和input事件

  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    v-model 為一個語法糖,Vue 會默認使用一個名為 valueprop,以及名為 input 的事件。

    為了避免不同的 value 有不同的作用,現在可以使用下面的方式自訂義自己想要的 v-model 行為。

    model: {
      prop: 'checked',
      event: 'change'
    }

    如果想要更改 checked 這個 prop 可以在 Vue 的 instance 中用以下這行程式發送 change 這個 event,並將目標的變動值傳給 checked 這個 prop

    this.$emit('change', $event.target.value);
  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    标签上使用```
    <input type="text" :value="msg" @input="msg=$event.target.value">

    {{msg}}

    ```
  • 面试哥
    面试哥 2021-01-12
    为面试而生,有面试问题,就找面试哥。

    原生input其实只是一个语法糖,:bind="value"与@change="value = $event.target.value"的结合。
    自定义组件的时候的v-model默认监听change事件和绑定value 的prop。

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看