请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

sam老师,请问自定义指令 waves 里面这里我注释的代码有什么意义?

图片描述
看了半天不知道这里是考虑什么情况做的处理,我注释后也能正常运行

正在回答 回答被采纳积分+3

2回答

提问者 前端小y 2020-06-11 01:36:01

关于directive中的update会被多次调用

初始化组件时,情况是 bind 一次,update 两次,指令绑定到‘查询’按钮,真实dom是

//img1.sycdn.imooc.com/szimg/5ee115e8087d35f513110587.jpg

//img1.sycdn.imooc.com//szimg/5ee11669088add9912770480.jpg

我点击‘查询’按钮后,真实dom是

//img1.sycdn.imooc.com//szimg/5ee116d0088aee4614440632.jpg

但是指令的钩子 update 未触发(componentUpdated 也未触发,组件初始化和update一样触发两次),这里我就有点不理解官网上的钩子触发条件,真实dom都已经更新了,为什么这两个钩子不触发?

//img1.sycdn.imooc.com//szimg/5ee118be085990fd08790586.jpg

那么,在 update 绑定事件,又给el绑定一个属性  '@@wavesContext' 有何意义?


0 回复 有任何疑惑可以回复我~
  • 扬_灵 #1
    同学你好,初始化的时候componentUpdated也是被调用的,你可以在waves中添加componentUpdated钩子函数在里面打印一下。因为要在 update 阶段重新绑定点击函数,所以增加了一个上下文 '@@wavesContext',里面保存点击事件对应的移除事件函数。点击之后update钩子函数没有执行你可以看一下页面组件有没有更新。如果不能解决你的问题,可以继续追问。
    回复 有任何疑惑可以回复我~ 2020-06-11 17:21:10
扬_灵 2020-06-10 21:28:15

同学你好,这是因为directive中的update会被多次调用,所以要在addEventListener之前清除一次事件,否则会导致事件的多次绑定,他注释这段代码后,会导致点击按钮时,handleClick方法被多次调用,如果帮助到了你,欢迎采纳!

0 回复 有任何疑惑可以回复我~
  • 提问者 前端小y #1
    关于directive中的update会被多次调用,还是有点问题,麻烦看下我下面的回答
    回复 有任何疑惑可以回复我~ 2020-06-11 01:15:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信