我们都知道vue中v-model是双向数据绑定,一般用在表单input框中,其实v-model可以用在组件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app">
<!--两种方法等同-->
<test-model v-model="num" :num="num"></test-model>
<!--<test-model :num="number" @ch="number = $event"></test-model>-->
</div>
</body>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
Vue.component('test-model',{
//如果不写这段代码,视图可以改变,但是vue实例中的数据不会改变
model:{
value:'num',//默认值是value
event:'change'//默认事件是input
},
props:['num'],
template:`<button @click='$emit("change",100)'>{{num}}</button>`
})
const vm = new Vue({
el:"#app",
data:{
num:0
}
})
</script>
</html>
再来看一下sync修饰符
会自动派发一个update事件
<!-- <test-sync :num.sync="num"></test-sync> -->
<test-sync @update:num='num=$event' :num='num'></test-sync>
Vue.component('test-sync',{
props:['num'],
template:`<button @click="$emit('update:num',300)">{{num}}</button>`
})