Я пытаюсь использовать PDFtron в одном из моих компонентов Vue. Я создаю экземпляр iFrame для просмотра PDF-файлов в смонтированном хуке, чтобы при загрузке 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 of undefined"
getPDF
? - person   schedule 12.01.2019#viewerElement
находится в том же компоненте Vue? - person yqlim   schedule 12.01.2019<div id='viewer' style='width: 1024px; height: 600px;'> </div>
- person Nick   schedule 12.01.2019let viewer;
внутри тега<script>
, но передexport default {...
. Затем ссылайтесь на него безthis
. - person   schedule 12.01.2019The viewer instance is not defined yet.
кажется сообщением об ошибке PDFTron, а не Vue или DOM. Если да, то проблема не во Vue, а в PDFTron. - person yqlim   schedule 12.01.2019