美文网首页
Vue | 一对基友

Vue | 一对基友

作者: cemcoe | 来源:发表于2020-03-12 21:00 被阅读0次

每天一遍提醒自己增强自身抵抗力,多喝热水,注意身体。

介绍完 两对cp 后,今天来看看一对基友的故事。

在 Vue 中有个名为 methods 的字段,这货通常是要搭配 v-on 来一起使用。

两个搞到一块可以实现术语唤为 事件监听 的东西。


来波回忆杀,看看原生的 JavaScript 是如何进行事件监听的?

const demo = document.querySelector('#demo')
demo.onclick = () => {
    console.log("mama,我被人点了。嘤嘤嘤。")
}

看上去不大高端,唤 addEventListener 来看看。

const demo = document.querySelector('#demo')
addEventListener('click', () => {
    console.log("mama,我被人点了。嘤嘤嘤。")
})

emm,有点样子了。

通过上面的一波回忆,要来监听事件可以提取下列步骤:

  • 找到要监听谁? || 监听对象
  • 对监听到的事件做何反应? || 响应

简言之,事件监听就是:某元素发生了什么事情,我要做出相应的反应证明我不是吃干饭的。


来看看在 Vue 的地盘事件监听是怎么的一个玩法?

<h1>{{cemcoe}}</h1>
<button v-on:click="qinqin">qinqin</button>
<button v-on:click="baobao">baobao</button>

v-on 监听事件,起到的是找到监听元素的作用;methods 提供具体的应对策略,被打要不要被打回去,还是以理服人。

const demo = document.querySelector('#demo')
// 老兄,找元素的事情交给我 v-on
addEventListener('click', () => {
// 回调函数就交给 methods 好了
    console.log("mama,我被人点了。嘤嘤嘤。")
})

这个东西还有语法糖 v-on:click === @click

用上语法糖,有点简洁的写法:

<h1>{{cemcoe}}</h1>
<button @click="qinqin">qinqin</button>
<button @click="baobao">baobao</button>

具体的 qinqin 和 baobao 函数这里就不实现了,当伪代码看。


通过上面的一番瞎掰,可以知道 methods 中其实是原先 addEventListener 的回调函数,函数肯定要有参数才能发挥它的魅力。

关于参数的问题:

  • 如果方法(函数)不需要参数,那方法后的 () 可以不写
    · 若方法本身有参数,会默认将原生事件 event 传进去
  • 同时传某个参数和 event 时,通过 $event 传进去

这个关于 event 的一些东西有空再写。


下面来看一些例子,正常的逻辑

<button @click="fn(‘cemcoe’)">点我</button>

// ---methods---
fn (a) { console.log(a) }

这是乖孩子,方法有一个函数,那么在使用时就规规矩矩地传给它一个参数,合作愉快。


那遇到就是叛逆,就是要彰显与众不同,就是不传参数且不加括号,会怎么样?下面是点三次按钮的结果。

<button @click="fn">点我</button>

// ---methods---
fn (a) { console.log(a) }
MouseEvent

在事件定义时,写方法时省略小括号,但是方法本身需要参数,这时Vue会默认将浏览器生产的 event 事件对象作为参数传入方法中。

下面来看一个方法定义时,需要 event 对象,同时需要其他参数的例子:

<button @click="fn('cemcoe', $event)">点我</button>
//---methods---
 fn (name, event) {
        console.log(name, event)
}
// cemcoe MouseEvent

大概就是这个样子,传参时使用 $event 传递事件本身。


原生的 事件监听 会有事件冒泡等问题,Vue 为这些问题提供了解决方案,术语叫做修饰符。换成大白话就是加点加状态。

<div @click="divClick">
    <button @click="btnClick">
        button
    </button>
</div>

//---methods---
divClick() {
    console.log("div")
},
btnClick() {
    console.log("btn")
}

当点击 button 时会发现控制台会打印 div 和 btn,也就是说,两个点击都被激活,这就是事件冒泡。

阻止冒泡,Vue 可以使用修饰符 .stop

<div @click.stop="divClick">
    <button @click="btnClick">
        button
    </button>
</div>

//---methods---
divClick() {
    console.log("div")
},
btnClick() {
    console.log("btn")
}

修饰符的使用方法如上例 ,直接在事件监听后加修饰符。


这里有一些其他修饰符:

  • stop 阻止冒泡 event.stopPropagation()
  • prevent 阻止默认事件 event.preventDefault()
  • keyCode 特定按键触发
  • once 执行一次回调

关于 v-on 和 methods 的故事告一段落。

这里是连载 化学小子的前端实验册 的第 19 篇,欢迎关注。

相关文章

  • Vue | 一对基友

    每天一遍提醒自己增强自身抵抗力,多喝热水,注意身体。 介绍完 两对cp 后,今天来看看一对基友的故事。 在 Vue...

  • 运营&产品  好一对“基友

    《运营之光》这本书我看得很慢,是第一本我不想错过任何一个细节想慢慢梳理不急于看完的一本干货满满的书,我现在看书喜欢...

  • 说一对身边的基友

    他是我们班上最好看的男生,有一次老师三岁的小孩一看到他,竟然喊他叫姐姐。 他是我们班的班草,人长得很帅,经常有其他...

  • 《星球大战》最萌cp来袭!!

    星球大战最有趣的部分就是看C-3PO和R2-D2这一对好基友。这也是LOZmini颗粒新品,星迷答应我,让基友一生...

  • 基友

    爱的基础 是友 友情有多牢固 爱就可能有多结实

  • 基友

    想不到上次一起吃早餐竟过了这么久。 基友在我上学的隔壁班,我俩认识了有8、9年。她天蝎座。 我俩一直很有缘,上学时...

  • 基友

    你可能还是更喜欢你基友 英语听写给他抄不给我抄 物理作业给他抄,也不给我抄 本是我要和你打羽毛球 你基友喊你,你就...

  • 200块毁了一对好基友

    阿文和阿东是大家公认的好基友。他俩是同桌,同床--阿东睡上铺,阿文睡下铺。一起吃饭,一起踢球,一起逃课,一起画画,...

  • 我们天生一对好基友

    只是因为在人群中多看了你一眼 再也没能忘掉你容颜。 ...

  • swift 中的一对基友:?和!

    swift中,我们经常看到和用到?和!,今天来聊一聊它们俩。 swift编程,不外乎是定义属性或者函数(方法),访...

网友评论

      本文标题:Vue | 一对基友

      本文链接:https://www.haomeiwen.com/subject/ruahjhtx.html