- 事件处理器
- 表单的综合案例
- 组件通信
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>