- 事件处理器
- 表单的综合案例
- 组件通信
1.事件处理器
实现功能:原来每点击一下最里面颜色外层,有几层会弹出几下,加上@click.stop后不管第几层只会弹一下;原本点击几下"点我"后台就会显示点了几下,加上@click.once后不管点击几下,后台只显示一次
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script> <title>事件处理</title> <style type="text/css"> .one{ background-color: red; height: 400px; width: 400px; } .two{ background-color: blue; height: 300px; width: 300px; } .three{ background-color: yellow; height: 200px; width: 200px; } .four{ background-color: pink; height: 100px; width: 100px; } </style> </head> <body> <div id="app"> <div class="one" @click.stop="fun1"> <div class="two" @click.stop="fun2"> <div class="three" @click.stop="fun3"> <div class="four" @click.stop="fun4"></div> </div> </div> </div> <input :value="msg"/> <button @click.once="clickMe">点我</button> </div> <script type="text/javascript"> new Vue({ el:'#app', data(){ return{ msg:'hello 小兵', }; }, methods:{ fun1(){ alert("fun1"); }, fun2(){ alert("fun2"); }, fun3(){ alert("fun3"); }, fun4(){ alert("fun4") }, clickMe(){ console.log(this.msg) } } }); </script> </body> </html>
2.表单的综合案例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script> <title>表单综合案例</title> </head> <body> <div id="app"> 姓名:<input name="name" v-model="name"/><br /> 密码:<input type="password" v-model="pwd"/><br> 性别:<span v-for="s in sexList"> <input type="radio" name="sex" v-model="sex" :value="s.id"/>{{s.name}} </span><br /> 籍贯:<select name="myAddr" v-model="myAddr"> <option v-for="a in adress" :value="a.id">{{a.name}}</option> </select><br> 爱好:<div v-for="h in hobby" > <input type="checkbox" name="myLike" v-model="myLike" :value="h.id"/>{{h.name}} </div> <br /> 个人简介:<textarea v-model="sign" cols="10" rows="5"></textarea><br> 同意:<input type="checkbox" v-model="ok"/><br> <button v-show="ok" @click="dosub">提交</button> </div> <script type="text/javascript"> new Vue({ el:'#app', data(){ return{ name:'小兵', pwd:'123456', sexList:[{ name:'男',id:1 },{ name:'女',id:2 },{ name:'未知',id:3 }], sex:1, hobby:[{ name:'保健',id:1 },{ name:'理发',id:2 },{ name:'洗头',id:3 },{ name:'养生',id:4 }], myLike:[], adress:[{ name:'湖南',id:1 },{ name:'陕西',id:2 },{ name:'江西',id:3 },{ name:'哈尔滨',id:4 }], myAddr:null, sign:null, ok:false }; }, methods:{ dosub(){ var obj={}; obj.name=this.name; obj.pwd=this.pwd; obj.sex=this.sex; obj.adress=this.adress; obj.love=this.myLove; obj.sign=this.sign; console.log(obj); } } }); </script> </body> </html>
3.组件通信
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script> <title>组件传参父传子</title> </head> <body> <div id="app"> <p>自定义组件</p> <my-button>xx</my-button> <p>组件通信父传子</p> <my-button ma='ss'></my-button> <p>组件通信父传子2</p> <my-button ma='ss' n="10"></my-button> </div> <script type="text/javascript"> new Vue({ el:'#app', components:{ 'my-button':{ props:['ma'], template:'<button @click="clickMe">被{{ma}}点击了{{n}}次</button>', data:function(){ return{ n:1 } }, methods:{ clickMe(){ this.n++; } } }, }, data(){ return{ msg:'hello 小兵' }; }, }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script> <title>组件传参子传父</title> </head> <body> <div id="app"> <p>组件通信子传父</p> <my-button ma='ss' @xxx="getParam"></my-button> </div> <script type="text/javascript"> new Vue({ el:'#app', components:{ 'my-button':{ props:['ma'], template:'<button @click="clickMe">被{{ma}}点击了</button>', data:function(){ return{ n:1 } }, methods:{ clickMe(){ let name='溜冰'; let bname='芊芊来了'; let price='免费'; this.$emit('xxx',name,bname,price) } } }, }, data(){ return{ msg:'hello 小兵', } }, methods:{ getParam(a,b,c){ console.log(a,b,c); } } }); </script> </body> </html>