4.5vue指令之v-on:

v-on

v-on的指令我们要了解4个方面:
1.用来干嘛?它的语法
2.为什么事件我们要加在methods中
3.怎么传递事件源
4.v-on的修饰符

语法:v-on:事件名称=“事件处理函数(参数)”   省略写法:@事件名称=“事件处理函数(参数)” 
  • 演示如何为元素添加事件

  • 如何添加事件处理函数

    • 定义事件处理函数的位置:methods属性
    • methods是一个单独的成员
  • 为什么事件处理函数需要在methods中添加

    • 这个结构中的this是指向当前组件对象,
    • 理论上讲,你也可以在data中定义,但是这里面的this指向null,如果是网页文件指向window,这也是为什么我们在data中的数据可以直接在模板中取得,那么data中的数据也是存在与vue组件中的,它是怎么存在的呢??
      data中属性会直接的存在vue组件中,所以当你在methods中进行取数据时候直接this.数据属性名 即可


      01.png
  • data中只定义数据,不定义功能行为

  • 如何去传递事件参数

    • 如果你没有传递事件源对象,那么它也会默认的传递事件源对象
    • 如果传递自定义参数,那么默认的事件源对象就不现传递啦
    • 但是,如果传递自定义参数的同时,需要事件源对象,那么就需要手动传递$event
  • 示例:

    <button v-on:click='dosome("jack",$event)'>点我啊</button>
    ---------------------------------------------------------
    methods: {
        dosome (name, event) {
          //   console.log('谢谢你点我')
          console.log(name)
          console.log(event)
        }
      }
    
  • 简写:@

    <button @click='dosome("jack",$event)'>点我啊</button>
    
  • 事件修饰符:


    02.png
    • prevent:阻止元素的默认行为
    • enter/13:键码和键别名
    • once:只触发一次
    • native:为组件的根元素添加原生事件
  • 示例:

<template>
    <div class="on">
        <p>这个文件用来说明v-on绑定事件</p>
        <p>{{msg}}</p>
        <!-- v-on:事件名称=“事件处理函数(参数)” -->
        <button v-on:click='dosome("jack",$event)'>点我啊</button>
        <button v-on:[type]='dothis'>你自由</button>
        <button @click='dosome("jack",$event)'>点我啊</button>
        <a href="http://baidu.com" @click.prevent.stop='sayHi'>单击我向你问好</a>
        <!-- <input type="text" v-model="key" @keydown.enter="showmsg"> -->
        <input type="text" v-model="key" @keydown.13="showmsg">
        <button @click.once='onceDo'>点我啊,只有一次机会</button>
        <button @click.once='key=123'>点我啊,只有一次机会</button>
    </div>
</template>
<script>
export default {
  data () {
    return {
      msg: 'hello',
      type: 'dblclick',
      key: 'abc'
    }
  },
  methods: {
    onceDo () {
      console.log('onceDo')
    },
    showmsg () {
      console.log(this.key)
    },
    sayHi (event) {
    //   event.preventDefault()
      alert('你好啊~~~')
    },
    dosome (name, event) {
      //   console.log('谢谢你点我')
      console.log(name)
      console.log(event)
    },
    dothis () {
      console.log('dothis')
    }
  }
}
</script>
<style lang="less" scoped>

</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 3,384评论 0 25
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,245评论 0 6
  • vue 2.0 渐进式框架 MVC 单向通信 > m:model 数据层 保存数据 > v:view视图层 用户界...
    web前端ling阅读 757评论 0 0
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,383评论 0 3
  • 生活无处不艺术,是我漫步在泰国的感受。
    Orange_Ng阅读 316评论 0 0