javascript - 将类实例保存到 Vue 数据
问题描述
我正在尝试在我的一个 Vue 组件中使用 PDFtron。我在挂载的钩子中创建了 pdf 查看器 iFrame 实例,以便在加载 Vue 时,PDF 框架显示准备好加载 PDF:
mounted() {
const viewerElement = document.getElementById('viewer');
this.viewer = new PDFTron.WebViewer({
path: 'https://www.pdftron.com/4.0/lib',
l: 'apikey'
}, viewerElement);
}
我想保存这个实例,以便我可以用这样的方法再次调用它:
methods: {
getPDF() {
this.viewer.loadDocument('https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf')
}
}
为了做到这一点,我想我可以viewer
在我的数据变量中创建一个变量,然后将 pdftron 查看器保存到它,这就是我将查看器保存到this.viewer
. 不幸的是,每当我调用该getPDF
函数时,都会收到以下错误:The viewer instance is not defined yet.
我不确定这是否是在 Vue 中保存类实例的正确方法。
该getPDF
函数在这样的按钮上调用:
<v-btn color="primary" @click="getPDF(url)" :disabled="!valid">Load PDF</v-btn>
'
更新:
我将我的 getPDF 函数更新为:
getPDF() {
const viewerInstance = this.viewer.getInstance()
viewerInstance.loadDocument('https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf')
}
但我仍然收到相同的错误The viewer instance is not defined yet
和“无法读取未定义的属性 loadDocument”
解决方案
在 WebViewer 加载和初始化之前,您以某种方式触发了按钮单击。
在获得 ready 事件之前,您无法与 WebViewer API(构造函数除外)进行交互。 https://www.pdftron.com/api/web/PDFTron.WebViewer.html#event:ready__anchor
有关示例,请参见此页面。 https://www.pdftron.com/documentation/samples/js/viewing
我建议在准备好的事件侦听器中添加您的按钮侦听器,这样用户只能在查看器准备好后使用这些按钮。
推荐阅读
- selenium - 如何在 Windows 10 中停止谷歌浏览器自动更新
- python - 我应该为我的 Dockerfile 使用哪个依赖文件?
- javascript - 如何使用其类在导航上使用 onmouseover 事件?
- django - 令牌无效:令牌必须在类 <'bytes'> 中
- django - 在 DRF 中的 abstractuser 中调用 create_superuser 和 create_user 函数
- github-actions - 要求对特定工作流程的所有外部合作者进行批准
- next.js - 我正在尝试运行我的 nextjs 应用程序,但收到错误 TypeError: Only absolute URLs are supported
- java - 如何在下面给出的代码中删除“[]”?预期输出是“pollTimestamp”
- python - 如何使用 Python API 从 Spark 中的一行创建列表
- c - C 程序错误代码混淆(比较值)