vue 里 document.getElementById 无法获取 dom 怎么解决

21次阅读

共计 591 个字符,预计需要花费 2 分钟才能阅读完成。

自己搭了一个 audiobookshelf 服务听点有声读物,发现章节列表无法定位到当前章节,调试了一下找到问题了,但是作为一个后端,vue 实在是不熟,感觉这不到 100 行的代码里涉及很多 vue 知识点,一下子不知道如何修复。。

我看了下,大概是 27 行这里点击 LabelViewChapters

https://github.com/advplyr/audiobookshelf/blob/master/client/components/player/PlayerUi.vue#L27

弹出一个窗口,代码在这个文件

https://github.com/advplyr/audiobookshelf/blob/master/client/components/modals/ChaptersModal.vue#L71

然后调用 scrollToChapter 滚动到正在播放的章节,但是 document.getElementById 找不到当前章节的 dom,导致逻辑停止,我在 this.$nextTick(this.scrollToChapter) 外面包一个 setTimeout 问题就解决了,所以问题还是出在查找前 dom 还没渲染出来的问题上?但是不知道如何不用 setTimeout 解决。

大家可以在这里讨论如何解决,也可以直接去提交 pr,4.9K star 的项目还是很不错的,下次说不定你就可以拿 $111 了。

正文完
 0