vue的模板语法(下篇)

简介: vue的模板语法(下篇)

一.事件处理

Vue通过由点(.)表示的指令后缀来调用修饰符,

 .stop

 .prevent

 .capture

 .self

 .once

如下:

阻止单击事件冒泡

         <a v-on:click.stop="doThis"></a>

提交事件不再重载页面

         <form v-on:submit.prevent="onSubmit"></form>

修饰符可以串联

         <a v-on:click.stop.prevent="doThat"></a>

只有修饰符

         <form v-on:submit.prevent></form>

添加事件侦听器时使用事件捕获模式

         <div v-on:click.capture="doThis">...</div>

只当事件在该元素本身(而不是子元素)触发时触发回调

         <div v-on:click.self="doThat">...</div>

click 事件只能点击一次

         <a v-on:click.once="doThis"></a>

来看一下单击冒泡事件:

       创建四个容器:
  <!-- 定义边界 -->
    <div id="contect">
      <div class="one"  @click="fun1">
        <div class="two"  @click="fun2">
          <div class="three"  @click="fun3">
            <div class="four" @click="fun4"></div>
          </div>
        </div>
      </div>
    </div>
给它们添加不同的颜色和大小:
<style type="text/css">
      .one{
        background-color: lightpink;
        height: 400px;
        width: 400px;
      }
      .two{
        background-color: cyan;
        height: 300px;
        width: 300px;
      }
      .three{
        background-color: fuchsia;
        height: 200px;
        width: 200px;
      }
      .four{
        background-color: lime;
        height: 100px;
        width: 100px;
      }
    </style>
最后写方法,点击事件:
<script type="text/javascript">
      new Vue({
        el:"#contect",
        data(){
          return{
          };
        },
        methods:{
          fun1(){
            alert("fun1")
          },
          fun2(){
            alert("fun2")
          },
          fun3(){
            alert("fun3")
          },
          fun4(){
            alert("fun4")
          }
        }
      })
    </script>

效果:

这就冒泡事件,如果要阻止,就要通过.stop来实现

效果:

       其他的也是一样的,大家可以试一试!!

二.表单的综合案例

       首先先造一些数据:
<script type="text/javascript">
      new Vue({
        el:"#contect",
        data(){
          return{
            name:"海绵宝宝",
            pwd:"123123",
            sexList:[{
              name:"公",id:1
            },{
              name:"母",id:2
            },{
              name:"未知",id:3
            }],
            sex:"1",
            hobby:[{
              name:"吹泡泡",id:1
            },{
              name:"抓水母",id:2
            },{
              name:"做蟹堡",id:3
            }],
              myHobby:[],
            address:[{
              name:"太平洋",id:1
            },{
              name:"大西洋",id:2
            },{
              name:"北冰洋",id:3
            },{
              name:"印度洋",id:4
            }],
            myAddr:null,
            sign:null,
            ok:false
          };
        }
      })
    </script>
接着搭建界面;
<!-- 定义边界 -->
    <div id="contect">
      姓名:<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 address" :value="a.id">{{a.name}}</option>
      </select><br />
      爱好:<span v-for="h in hobby"  >
        <input type="checkbox"  v-model="myHobby" name="myHobby":value="h.id"/>{{h.name}}
      </span><br />
      个人简介:<textarea v-model="sign" cols="18" rows="4"></textarea> <br />
      同意:<input type="checkbox" v-model="ok"/><br />
    <button v-show="ok" @click="submit()"> 提交</button>
    </div>
   
 搭建好之后就来写方法,  保存json格式数据
methods:{
          submit(){
            var obj={};
            obj.name=this.name;
            obj.pwd=this.pwd;
            obj.sex=this.sex;
            obj.address=this.myAddr;
            obj.hobby=this.myHobby;
            obj.sign=this.sign;
            console.info(obj);
          }
        }

最后打印看结果:

三.组件通信⭐⭐

       3.1 自定义组件

       原本是没有<my-button>这个按钮属性
<div id="contect">
      <p>自定义组件</p>
      <my-button>我的按钮</my-button>
    </div>
       写方法实现:
<script type="text/javascript">
      new Vue({
        el:"#contect",
        components:{
          "my-button":{
            template:"<button>{{我的按钮}}</button>"
          }
        },
      })
    </script>

3.2 组件通信之父传子

--父组件向子组件传递数据(props)和子组件向父组件传递数据(事件)

在父组件中,可以通过在子组件标签上使用属性来传递数据。子组件可以通过在组件定义的选项中声明 props 来接收父组件传递的数据
加了一个属性,me
<!-- 定义边界 -->
    <div id="contect">
      <p>组件通信父传子</p>
      <my-button me="潇洒姿"></my-button>
    </div>
<script type="text/javascript">
      new Vue({
        el:"#contect",
        components:{
          "my-button":{
            props:["me"],
            template:"<button>{{me}}</button>"
          }
        }
      })
    </script>

3.3组件通信之子传父

      在子组件中,可以通过触发自定义事件来将数据传递给父组件。父组件可以通过在子组件标签上监听对应的事件来接收子组件传递的数据。

<div id="contect">
      <p>组件通信子传父</p>
      <my-button me="潇洒姿" @xxx="getParam"></my-button>
    </div>
<script type="text/javascript">
      new Vue({
        el:"#contect",
        components:{
          "my-button":{
            props:["me"],
            template:"<button @click='clickMe'>{{me}}</button>",
            methods:{
              clickMe(){
                let name="张三";
                let bname="我的高中暗恋故事";
                let price="无价";
                this.$emit("xxx",name,bname,price)
              }
            }
          }
        },
        methods:{
          getParam(a,b,c){
            console.info(a,b,c);
          }
          }
      })
    </script>

效果:

今天的分享就到这啦!!!

相关文章
|
27天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
27天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
24 1
|
27天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1059 0
|
28天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
36 1
vue学习第一章
|
1月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
1月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
下一篇
DataWorks