v-model组件

今天发现有一个v-model的组件,我查了查资料发现原理是我昨天写的的子组件向父组件传值。

先上代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>vue v-model组件</title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	    <script type="text/javascript" src="js/vue.min.js"></script>
	</head>
	<body>
		<div id="box">
            <!-- <price-input v-model="price"></price-input> -->
            <!-- 手动实现了v-model双向绑定 -->
            <!-- 3、父组件的input事件被触发,将传来的值赋给父组件的变量price -->
            <!-- 4、父组件value的值绑定到price -->
            <h3 style="color: red;">v-model组件</h3>
            <price-input :value="price" @input="onInput"></price-input>
            <p>{{price}}</p>
            <br>
            <br>
            <br>
            <br>
            <h3 style="color: red;">v-model语法糖用法</h3>
            <input v-model="price2" type="text">
            <p>{{price2}}</p>
        </div>
        <script type="text/javascript">
            Vue.component('price-input', {
                // 5、将父组件的value值通过props传递给子组件
                // 1、当有数据输入时触发了该组件的input事件
                template: '<input :value="value" @input="updateVal($event.target.value)" type="text">',
                props: ["value"], 
                methods: {
                     updateVal: function(val) {
                        // 2、手动触发父组件的input事件并将值传给父组件
                        this.$emit('input', val);
                     }
                 }
            });
            var app = new Vue({
                 el: '#box',
                 data: {
                     price: '',
                     price2: ''
                 },
                 methods: {
                      onInput: function(val) {
                           this.price = val;
                      }
                  }
             });
        </script>
	</body>
</html>

这个内容核心就是子组件向父组件传值,通过输入内容触发事件,然后把事件传给父组件  emmm......  ,好麻烦不解释了。总之这就是v-model语法糖的实现方式。和直接用v-model作用一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值