老师好,事件绑定放置的位置有点混淆了

老师好,事件绑定放置的位置有点混淆了

有method有mounted还有activated,我要怎么区分什么时候用哪个来定义方法啊。我知道method是函数的具体定义,但mounted和actived呢??虽说区别是渲染和重新展示,但是不是还有一种是直接绑定在标签上的吗??这三种又有什么关联和区别呢???还是说标签上的是和用户互动的,而mounted和actived是被动的事件,但是scroll也算是交互之一啊,总是有点乱,希望老师帮我分析解惑

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,对于你的问题解答如下:

  1. 是的,在activated函数中也可以操作dom。

  2. window.addEventListener()这种写法表示调用函数。

    对象中只能声明函数,不可以调用函数哦,如下所示写法会出现报错的。

    http://img1.sycdn.imooc.com//climg/5f478cbc0921840c07340258.jpg

祝学习愉快~

好帮手慕慕子 2020-08-27 17:02:23

同学你好, 具体可以参考如下解析理解:

  1. 这三个都属于vue实例上的属性和方法,书写格式如下所示:methods是对象格式,mounted和activated是函数格式。

    http://img1.sycdn.imooc.com//climg/5f476b7109d122ff02210094.jpg

  2. 三个的区别如下:

    (1)mounted生命周期函数在vue实例被挂载后调用,也就说此时已经可以获取到dom节点了,所以一般都是这个函数内对html的dom节点进行一些需要的操作。

    (2)activated这个生命周期函数,在vue语法中规定,被 keep-alive 缓存的组件激活时调用,也就是说从缓存中加载页面时,才会触发activated。

    (3)methods是vue实例的一个属性,直接在标签上绑定事件,对应的事件函数一般都是直接在methods方法中。

  3. 视频中的代码是给全局对象window绑定scroll事件,不是给哪一个元素绑定事件,所以不需要写在methods中。

    不可以放在methods中还有两个原因:

    (1)一个是因为methods是对象,不可以直接书写window.addEventListener()这样的表达式。

    (2)另一个原因是,methods中的方法需要调一次才会执行。

    那为什么放在activated中而不是放在mounted中呢,原因如下:

    由于老师使用了keep-alive做缓存,导致只有首次进入详情页时执行一次mounted函数,再次进入详情页的时候,会从缓存中获取组件,会触发activated生命周期函数,所以老师就在这个函数内部绑定事件了。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕雪9296518 #1
    mounted生命周期函数在vue实例被挂载后调用,也就说此时已经可以获取到dom节点了,所以一般都是这个函数内对html的dom节点进行一些需要的操作。那么是不是说明activated也可以操作dom结构?毕竟区别仅仅是再显示时候从内存中获取渲染数据, 还有methods是对象,不可以直接书写addeventlistenr这种是为什么??window.addEventListener()不也hi是函数吗
    2020-08-27 17:37:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师