相关文章推荐
满身肌肉的高山  ·  vue 报错 ...·  4 月前    · 
谈吐大方的电池  ·  Vue的methods方法中调用另一个方法及 ...·  2 月前    · 
爱吹牛的香烟  ·  vue使用quill编辑器自定义附件上传方法 ...·  1 月前    · 
奋斗的香蕉  ·  参与2023年“称霸麦当劳吃鸡榜”活动餐厅名 ...·  7 月前    · 
玩手机的饭卡  ·  博客來-神曲套書(神曲Ⅰ:地獄篇+神曲Ⅱ:煉 ...·  10 月前    · 
鼻子大的烈酒  ·  NETSDK1004: File aset ...·  1 年前    · 
斯文的烤面包  ·  @ExceptionHandler使用方法 ...·  1 年前    · 
失望的篮球  ·  CSS3阴影实现方法及技巧全解_w3cschool·  2 年前    · 
Code  ›  浅入深出Vue:事件处理开发者社区
按钮 vue
https://cloud.tencent.com/developer/article/1462645
冲动的鸵鸟
2 年前
作者头像
若羽
0 篇文章

浅入深出Vue:事件处理

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Code思维奇妙屋 > 正文

浅入深出Vue:事件处理

发布 于 2019-07-13 13:30:08
307 0
举报

上一篇的最后留下了一个 v-on 的思考,也就是本章的主题: 事件处理

为什么需要事件处理

在前端开发中,经常要面对各种表单、按钮。而这里面就住着一个事件:点击 (click)。

前端童鞋们肯定不陌生它,因为经常会出现。比如说:

  • 表单提交
  • 各式各样的按钮
  • 列表多级菜单折叠

v-on 支持监听原生的 DOM 事件,也就是 vue 中也支持以前纯js写法中各式各样的时间,只是在 vue 中换了一种写法。

使用事件处理的好处便在于我们可以通过事件来 控制数据 。

MVVM 中强调的一点便是数据驱动,那么在 vue 中如果利用数据去驱动视图呢,上一篇讲了 双向绑定 。绑定上去了,如果没办法对数据进行操作,那就变成了单向渲染了。对于这个问题,解决的方案便是: 事件处理 ,利用事件去控制数据变化,再由数据的变化驱动着视图。

事件处理是什么

这一个问题在上面已经给出答案了:

  • 从字面上理解,它就是DOM事件,只不过在 vue 中使用方式不同。
  • 深层次理解,它是控制数据变化的 控制器 ,是连接 视图 与 数据 的桥梁。

如何使用

通过按钮标签来看一下事件处理的写法:

<button v-on:需要响应的事件名="处理事件的函数名"></button>

这里需要注意一点:

  • 处理事件的函数名 必须 写在 methods 中,要让当前组件实例可访问。

还是继续昨天的例子,这里让我们解决最后一个问题:

  • 利用按钮的点击事件来改变 isDark 的值。

首先页面上加上按钮:

<template>
    <h1 v-bind:class="isDark ? 'dark' : 'light'">{{ formatTime(time) }}</h1>
    <a v-for="(item, index) in urlList" v-bind:key="index" v-bind:href="item.url">{{item.text}}</a>
    <br/><button v-on:click="change">改变背景</button>
</template>

这里我们指定响应 click 事件的函数名是 change ,接着我们去定义我们的函数:

  methods: {
    change: function() {
      this.isDark = !this.isDark
  }

代码很简洁,因为这是个布尔值,我们直接取反就好了。

来看看效果:

现在是白色的,让我们点一下看看:

点完之后变黑了,再点击一次又变回白色了~ 很完美的达到了我们的要求。

还可以通过其他的事件来完成一些 特效 ,比如:

  • 输入框在失去焦距时的自动验证
  • 鼠标移动到元素上时弹出提示文字

等等。

事件修饰符

如果我们只想让这个按钮生效一次怎么办?

点了一次之后,就不再让它继续变了。

vue 在这方便提供了 事件修饰符 ,目的就是为了避免开发者们手动去处理原生事件的一些逻辑。

语法如下:

<button v-on:事件名.事件修饰符="处理函数"></button>

所有的修饰符在下表列出:

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive

修饰符可以同时使用多个:

<button v-on:事件名.事件修饰符1.事件修饰符2.事件修饰符3="处理函数"></button>

上述修饰符待后面我们具体用到时再细细讲解,其中的一些修饰符拿出来甚至足够一篇长博文的内容了。

这里我们使用到的修饰符是:

.once

代码:

<template>
    <h1 v-bind:class="isDark ? 'dark' : 'light'">{{ formatTime(time) }}</h1>
 
推荐文章
满身肌肉的高山  ·  vue 报错 ReferenceError: exports is not defined - 兔&&大梅
4 月前
谈吐大方的电池  ·  Vue的methods方法中调用另一个方法及this指向问题_vue中实现methods一个方法调用另外一个方法
2 月前
爱吹牛的香烟  ·  vue使用quill编辑器自定义附件上传方法,并根据上传附件名称生成链接_quill 上传附件
1 月前
奋斗的香蕉  ·  参与2023年“称霸麦当劳吃鸡榜”活动餐厅名单 | 热点更新 | 麦当劳官网
7 月前
玩手机的饭卡  ·  博客來-神曲套書(神曲Ⅰ:地獄篇+神曲Ⅱ:煉獄篇+神曲Ⅲ:天堂篇) (增訂新版)>內容連載
10 月前
鼻子大的烈酒  ·  NETSDK1004: File aset tidak ditemukan - .NET CLI | Microsoft Learn
1 年前
斯文的烤面包  ·  @ExceptionHandler使用方法 - CSDN文库
1 年前
失望的篮球  ·  CSS3阴影实现方法及技巧全解_w3cschool
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号