this.currentBook
来源:5-13 全文搜索功能实现(搜索算法+数组降维)
肖慕粉
2019-04-16
老师,按您说的,再EbookReader可以正常获取this.currentBook
麻烦老师帮我看下代码可以吗,感激。在EbookSlideContents无法获取。
https://gitee.com/kaiwenxiao/vue-ebook
写回答
2回答
-
你目前的源码:
mounted() { console.log(this.currentBook) // null console.log('asd') // asd },
这样打印是获取不到currentBook的,因为下载电子书后才会设置currentBook,这个过程在Vue渲染DOM之后,所以在mounted的时候currentBook并没有被赋值,因而打印结果为null,要监听currentBook的状态可以使用watch进行监听,代码如下:
watch: { currentBook(book) { console.log('new currentBook', book); } }
这样就可以监听currentBook的变化了:)
032020-08-07 -
Sam
2019-04-16
好的,代码调试过了,没什么大问题,把EbookSlideContents.vue源码中27-30行做一下调整就行了,代码如下:
<div class="slide-contents-book-info-wrapper"> <div class="slide-contents-book-title">{{metadata && metadata.title}}</div> <div class="slide-contents-book-author">{{metadata && metadata.creator}}</div> </div>
增加metadata的判断即可消除报错,出错原因是metadata是异步写入的,下载电子书解析后才会获得metadata,所以这个过程在Vue渲染DOM之后,如果不加metadata的判断会导致浏览器抛出异常
032019-04-16
相似问题