美文网首页
addEventListener 内 this 指向问题

addEventListener 内 this 指向问题

作者: 微笑的大步向前走 | 来源:发表于2019-12-25 14:45 被阅读0次

    相关问题前提:
    最近在做一个 已知 audio 的 url 获取 其 时长,并且push 进去数组的问题

    上代码:

                if (fileType === 'audio') {
                  let audioDom = new Audio(url)
                  let _this = this
                  audioDom.addEventListener('loadedmetadata', function (_event) {
                    embeddedData.audio = {
                      id: fileUrl,
                      Extension: fileType.toUpperCase(),
                      fileExtension: fileType.toUpperCase(),
                      // 获取音频的长度
                      duration: Math.round(audioDom.duration)
                    }
                    fileInfo.audioTime = Math.round(audioDom.duration)
                    _this.embeddedFiles.push(embeddedData)
                    _this.$emit('uploadSuccess', fileInfo)
                  })
                } else {
                  fileType === 'image' ? this.embeddedImages.push(embeddedData) : this.embeddedFiles.push(embeddedData)
                  this.$emit('uploadSuccess', fileInfo)
                }
    

    记录一下:
    1、首先要常见一个 audio dom
    2、然后 用 addEventListener('loadedmetadata', function(){}),这个事件是说 等 这个audio 都加载完成了以后 ,就可以获取到 audio的 相关 参数,比如说 duration值
    3、这一点需要注意:在 这个事件里面,数据是拿不出来的,所以 ,我就用 原本的一个全局的 数据push 进去了,但是用的是 this.embeddedFiles.push(embeddedData),但是 报错表示 this.embeddedFiles 不存在,是由于作用域的问题,所以要 先 let _this = this,再用 _this.embeddedFiles.push(embeddedData) 就可以了

    ok ,仅此记录

    相关文章

      网友评论

          本文标题:addEventListener 内 this 指向问题

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