vue模板语法下集->事件处理器,表单的综合案例,组件通信

简介: vue模板语法下集->事件处理器,表单的综合案例,组件通信
  • 事件处理器
  • 表单的综合案例
  • 组件通信

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>

目录
相关文章
|
23天前
|
JavaScript
vue 组件事件
vue 组件事件
|
26天前
|
缓存 JavaScript 前端开发
vue核心语法2
vue核心语法2
|
2月前
|
JavaScript
|
2月前
|
JavaScript 前端开发
一文告诉你Vue的事件处理
一文告诉你Vue的事件处理
32 0
|
2月前
|
JavaScript
Vue之事件修饰符
Vue之事件修饰符
|
5天前
|
资源调度 JavaScript 前端开发
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
|
5天前
|
JavaScript
【vue】深入探讨vue中组件间多种传值方式
【vue】深入探讨vue中组件间多种传值方式
【vue】深入探讨vue中组件间多种传值方式
|
5天前
|
JavaScript 前端开发
vue组件化开发流程梳理,拿来即用
vue组件化开发流程梳理,拿来即用
|
5天前
|
移动开发 JavaScript 前端开发
Vue Router的介绍与引入
Vue Router的介绍与引入
|
5天前
|
JavaScript 应用服务中间件 nginx
vue中404解决方法
vue中404解决方法