Javascript vue pdf无法加载到所有页面;“未定义的属性”;
我正在使用:Javascript vue pdf无法加载到所有页面;“未定义的属性”;,javascript,firebase,vue.js,google-cloud-firestore,vuejs2,Javascript,Firebase,Vue.js,Google Cloud Firestore,Vuejs2,我正在使用: Vue.js、Vue路由、Vuetify、Firebase(此处为数据库)和Vue pdf 我试图使用“vue pdf”加载所有pdf页面,但在尝试读取pdf时出现此错误 未捕获的TypeError:无法读取未定义的属性“novel” 我有一个名为novel的对象,它最初设置为null。当我从Firebase获取数据时,它被分配给这个新对象。我按照教程加载了多个pdf页面。然而,在本教程中使用了直接URL,但在我的例子中,我试图访问对象中的一个特定值,即this.novel.n
- Vue.js、Vue路由、Vuetify、Firebase(此处为数据库)和Vue pdf
<template>
<div>
<Navbar />
<v-container fluid>
<h1>{{novel.title}}</h1>
<div class="novel-display container">
<pdf
v-for="i in numPages"
:key="i"
:src="src" //this should display the loaded pdf file
:page="i"
style="display: inline-block; width: 100%"
@num-pages="pageCount = $event"
@page-loaded="currentPage = $event"
></pdf>
</div>
<div class="text-center">
<v-pagination v-model="currentPage" :length="pageCount" :total-visible="7" circle></v-pagination>
</div>
</v-container>
<Footer />
</div>
</template>
<script>
import Navbar from "./Navbar";
import Footer from "./Footer";
import pdf from "vue-pdf";
import db from "../db";
// var loadPDF = pdf.createLoadingTask(
// "https://cdn.filestackcontent.com/wcrjf9qPTCKXV3hMXDwK"
// );
var loadingTask = pdf.createLoadingTask(this.novel.novel_url); //the file I would like to load
export default {
name: "Read",
components: {
Navbar,
Footer,
pdf,
},
data() {
return {
novel: null, // data from Firebase is saved here
src: loadingTask ,
currentPage: 0,
pageCount: 0,
numPages: undefined,
};
},
mounted() {
this.src.promise.then((pdf) => {
this.numPages = pdf.numPages;
});
},
created() {
let ref = db
.collection("Novels")
.where("novel_slug", "==", this.$route.params.novel_slug);
ref.get().then((snapshot) => {
snapshot.forEach((doc) => {
this.novel = doc.data();
this.novel.id = doc.id;
});
});
},
};
</script>
{{novel.title}
从“/Navbar”导入导航栏;
从“/Footer”导入页脚;
从“vue pdf”导入pdf;
从“./db”导入数据库;
//var loadPDF=pdf.createLoadingTask(
// "https://cdn.filestackcontent.com/wcrjf9qPTCKXV3hMXDwK"
// );
var loadingTask=pdf.createLoadingTask(this.novel.novel\u url)//我要加载的文件
导出默认值{
名称:“读”,
组成部分:{
导航栏,
页脚,
pdf,
},
数据(){
返回{
novel:null,//来自Firebase的数据保存在这里
src:loadingTask,
当前页面:0,
页面计数:0,
数值:未定义,
};
},
安装的(){
this.src.promise.then((pdf)=>{
this.numPages=pdf.numPages;
});
},
创建(){
设ref=db
.收藏(“小说”)
.where(“novel_slug”,“==”,this.$route.params.novel_slug);
ref.get()。然后((快照)=>{
snapshot.forEach((doc)=>{
this.novel=doc.data();
this.novel.id=doc.id;
});
});
},
};
您不能在导出默认值
之外使用此
(请参阅)。此外,Firebase数据库获取是异步的,因此只有当get()
返回的承诺得到满足时(即
您可以在get()中的created()
钩子中初始化loadingTask
。然后()
,如下所示(未测试):
从“/Footer”导入页脚;
从“vue pdf”导入pdf;
从“./db”导入数据库;
导出默认值{
名称:“读”,
组成部分:{
导航栏,
页脚,
pdf,
},
数据(){
返回{
novel:null,//来自Firebase的数据保存在这里
src:null,
当前页面:0,
页面计数:0,
数值:未定义,
};
},
安装的(){
this.src.promise.then((pdf)=>{
this.numPages=pdf.numPages;
});
},
创建(){
设ref=db
.收藏(“小说”)
.where(“novel_slug”,“==”,this.$route.params.novel_slug);
ref.get()。然后((快照)=>{
snapshot.forEach((doc)=>{
this.novel=doc.data();
this.novel.id=doc.id;
});
this.src=pdf.createLoadingTask(this.novel.novel\uURL);
});
},
};
您不能在导出默认值
之外使用此
(请参阅)。此外,Firebase数据库获取是异步的,因此只有当get()
返回的承诺得到满足时(即
您可以在get()中的created()
钩子中初始化loadingTask
。然后()
,如下所示(未测试):
从“/Footer”导入页脚;
从“vue pdf”导入pdf;
从“./db”导入数据库;
导出默认值{
名称:“读”,
组成部分:{
导航栏,
页脚,
pdf,
},
数据(){
返回{
novel:null,//来自Firebase的数据保存在这里
src:null,
当前页面:0,
页面计数:0,
数值:未定义,
};
},
安装的(){
this.src.promise.then((pdf)=>{
this.numPages=pdf.numPages;
});
},
创建(){
设ref=db
.收藏(“小说”)
.where(“novel_slug”,“==”,this.$route.params.novel_slug);
ref.get()。然后((快照)=>{
snapshot.forEach((doc)=>{
this.novel=doc.data();
this.novel.id=doc.id;
});
this.src=pdf.createLoadingTask(this.novel.novel\uURL);
});
},
};
非常感谢您的时间和帮助。这确实有效,我只需要将代码放入挂载函数中,并将其放在您的解决方案下,就可以了。再次感谢您的时间。不客气,很高兴我能帮助您。请同时投票选出答案,请参阅。谢谢,我刚去了。谢谢你,非常感谢你的时间和帮助。这确实有效,我只需要将代码放入挂载函数中,并将其放在您的解决方案下,就可以了。再次感谢您的时间。不客气,很高兴我能帮助您。请同时投票选出答案,请参阅。谢谢,我刚去了。非常感谢。
import Footer from "./Footer";
import pdf from "vue-pdf";
import db from "../db";
export default {
name: "Read",
components: {
Navbar,
Footer,
pdf,
},
data() {
return {
novel: null, // data from Firebase is saved here
src: null ,
currentPage: 0,
pageCount: 0,
numPages: undefined,
};
},
mounted() {
this.src.promise.then((pdf) => {
this.numPages = pdf.numPages;
});
},
created() {
let ref = db
.collection("Novels")
.where("novel_slug", "==", this.$route.params.novel_slug);
ref.get().then((snapshot) => {
snapshot.forEach((doc) => {
this.novel = doc.data();
this.novel.id = doc.id;
});
this.src = pdf.createLoadingTask(this.novel.novel_url);
});
},
};
</script>