v-model简易原理

v-model是什么: 它是Vue的双向数据绑定指令

作用: 将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。(响应式 实际上来说是所有和该数据对应的都会改变)

v-model 用法

v-model 双向数据绑定指令

  1. v-model绑定的属性可以再视区反馈数据 v 和M相互影响
  2. v-model 是vue唯一的双向数据绑定的
  3. v-model 只能再再含有 vule属性的标签中绑定 form表单标签中
  4. v-model 只能绑定data成员, 不能绑定表达式 就是不能有其它的东西 比如说 加减乘除等等
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    .apple {
        color: blue;
    }
    .pear {
        font-size: 25px;
    }

    .orange {
        background: hotpink
    }
</style>

<body>
    <div id="app">
        <h2>v-model</h2>
        <p>{{city}}</p>
        <p> <input type="text" :value="city"></input></p>
        <p> v-model是做属性绑定的只能绑定 value<input type="text" v-model="city"></input>
        </p>
    </div>
    <script src="../vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                city: '北京',
                weather: 'snow'
            },
            // 给vue设置方法的
            methods: {
            }
        })
    </script>
</body>

</html>

原理

本质上来说: v-model=“feel” 是 :value=“feel” @input=“feel = $event.target.value” 的缩写。

  1. 用oninput来时刻感知表单框的变化
  2. 每当表单有变化就调用 feel
  3. feel会将表单的内容赋值给data中对应的数据,对对应的数据进行更新
  4. 当data的数据改变后, data的数据再影响对应的其它有使用该数据的地方,将他们更新
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <h1>v-model 简易原理</h1>
        <h2>v-model双向数据绑定</h2>
        <!-- <input v-model="xxx"> -->
        <p>{{ weather }}</p>
        <p> v-bind属性绑定:<input type="text" :value="weather" /> </p>
        <!-- oninput事件:可以感知到输入框的输入状态 -->
        <p> v-model简易原理1:<input type="text" @input="feel" :value="weather" /> </p>
        <!-- 在标签事件内部可以直接使用$event关键字,代表事件对象 -->
        <p> v-model简易原理2:<input type="text" @input="weather = $event.target.value" :value="weather" /> </p>
    </div>

    <script src="../vue.js"></script>

    <script>
        var vm = new Vue({
            // Vue实例内部
            el: '#app',
            data: {
                weather: '雪'
            },
            methods: {
                // 感知输入框输入状态
                feel(evt) {
                    // evt:事件对象  InputEvent ,键盘输入的事件对象
                    // console.log(evt)
                    // console.dir(evt.target) // 触发当前事件的输入框的dom节点对象
                    // console.dir(evt.target.value) // 触发当前事件的输入框输入的信息
                    // 把输入框输入的信息赋予给weather
                    this.weather = evt.target.value
                }
            }
        })
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值