冇事来学系--Vue2.0事件绑定

简介: 事件绑定指令v-on事件绑定指令,用于为DOM元素绑定事件监听语法格式 --> v-on: 事件名称="事件处理函数名称"若需要传递参数,则在事件处理函数名称后面加个括号( ),在括号内写入参数

事件绑定指令


  • v-on事件绑定指令,用于为DOM元素绑定事件监听
  • 语法格式 --> v-on: 事件名称="事件处理函数名称"
  • 若需要传递参数,则在事件处理函数名称后面加个括号( ),在括号内写入参数
<!-- 点击按钮,count的值+1或者-1 -->
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="addCount"> +1 </button>
  <button v-on:click="subCount"> -1 </button>
  <button v-on:click="addN(2)"> +n </button>    <!-- 每次加2 -->
</div>


// el是表明vue控制区域的;data对象是要渲染到页面的数据;methods对象是定义事件处理函数的位置
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add: function(){},    // 这种是普通的写法,日常开发中通常使用简写,如下:
    addCount(){
      console.log(vm)   // 打印vue实例对象vm,可以发现要修改的数据count是vm的一个属性
      // vm.count += 1      // 通过vm对象的count属性,来修改count的值。但是通常不这么写,而是直接用this
      this.count += 1   // this指向的就是vue的对象实例vm
    },
    subCount(){
      this.count -= 1
    },
    addN(n){
      this.count += n
    }
  }
})


  • 由于v-on指令使用的非常多,所以通常使用简写,符号为@    (v-bind简写为冒号:)

事件处理函数的简写:当事件处理函数只有一句代码时,可以 直接写在行内,以字符串的形式,在绑定事件的背后用等号连接

<button @click="i+=1">加1</button>


事件对象$event

  • 使用事件对象的两种情况
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="add"> +n </button>    
</div>
// 需求:当count为偶数的时候,按钮背景颜色变为红色
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add(e){
      this.count += 1;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e.target是触发事件的事件源
      }else {
        e.target.style.backgroundColor = ''
      }
    }
  }
})
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="add(1)"> +n </button> <!-- 当事件处理函数传入参数时,就会覆盖掉原有的事件对象 -->
</div>
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add(e){             // 因为上面的使用,add函数是传入了参数的,所以这个e是形参而非事件对象
      this.count += 1;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e是形参也就没有e.target,所以这里会报错
      }else {
        e.target.style.backgroundColor = ''
      }
    }
  }
})
  • 对于传入的参数覆盖了事件对象e的问题, vue提供了一个内置变量$event,这就是原生DOM的事件对象e

如果默认的事件对象e被覆盖了,则可以手动传递一个$event

<button v-on:click="add(1, $event)"> +n </button> <!-- 这里传入两个实参,$event的就是事件对象(固定写法) -->
// 处理函数定义也要写入两个形参
add(n, e){              // 这两个参数位置可换
      this.count += n;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e是形参也就没有e.target,所以这里会报错
      }else {
        e.target.style.backgroundColor = ''
      }
    }


目录
相关文章
|
JavaScript
冇事来学系--Vue2.0中自定义事件
定义 一种组件之间通信的方式,适用于子传父
78 0
|
JavaScript 开发者
冇事来学系--Vue2.0中自定义指令
什么是自定义指令 vue官方提供了v-text、v-for、v-if、v-model等指令,此外vue还允许开发者自定义指令
94 0
|
JavaScript 容器
冇事来学系--Vue2.0中VueComponent(组件)
组件的本质 组件的本质就是一个 构造函数 f VueComponent (options) { this._init(options); } ,是Vue.extend( )生成的 当我们使用组件时,写了组件的标签,Vue解析时就会创建该组件的实例对象,即Vue帮我们执行了这一句代码 new VueComponent(options) (options就是我们写的data、methods、computed等数据) 每次调用Vue.extend( )时,返回的都是一个全新的VueComponent
271 0
|
开发者
冇事来学系--Vue2.0侦听器
watch侦听器允许开发者监视数据的变化,从而针对数据的变化做出特定的操作
86 0
|
存储 JavaScript 前端开发
冇事来学系--Vue2.0中vuex(上)
专门在Vue中实现集中式状态 (数据) 管理的一个Vue插件,对vue中多个组件的共享状态进行集中式的管理(读/写) ,适用于任意组件之间的通信
161 0
|
JavaScript
|
JavaScript 前端开发
冇事来学系--Vue2.0中讲讲生命周期吧
生命周期(Life Cycle) 是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。 生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。 生命周期函数中的this指向的是vm或组件实例对象
150 0
|
前端开发
冇事来学系--Vue2.0中Promise详讲(下)
then-fs的基本使用 可以通过node下载then-fs。 npm install then-fs
129 0
|
前端开发 JavaScript 数据库
冇事来学系--Vue2.0中Promise详讲(上)
回调地狱 多层回调函数的相互嵌套,就形成了回调地狱
264 0