【发布时间】:2020-12-12 01:58:23
【问题描述】:
我正在创建一个课程网站,每个课程都有自己的页面。 假设我打开了 1 号课程,那么链接是 http://localhost:8080/course/1 。我想将其更改为 http://localhost:8080/course/course-name-here 。我的问题是,当我更改参数时,没有从 API 中获取数据。
index.js
{
path: '/courses',
name: 'Courses',
component: () => import(/* webpackChunkName: "about" */ '../views/Courses.vue')
},
{
path: '/course/:id',
name: 'CourseDetail',
props: true,
component: () => import(/* webpackChunkName: "about" */ '../views/CourseDetail.vue')
}
课程列表.vue
<v-row>
<v-col sm="6" md="4" v-for="course in courses" v-bind:key="course.courseId">
<router-link v-bind:to="{name: 'CourseDetail', params: {id: course.courseTitle}}" class="text-decoration-none">
<VerticalCard v-bind:course="course"/>
</router-link>
</v-col>
</v-row>
CourseDetail.vue(脚本)
import axios from 'axios'
export default {
props:['id'],
data: function(){
return {
singleCourse: null,
selectedIndex: null,
showPage: false
}
},
methods: {
getData() {
var that = this
axios.get('http://my-api-here.amazonaws.com/v1/api/course?id=' + this.id,
{
headers: {
'Authorization' : 'Bearer ' + this.$store.state.authKey
}
})
.then(function(response) {
that.singleCourse = response.data.body
})
},
show() {
if(this.$store.state.isLogin == true){
this.showPage = true
}
else {
this.$router.replace('/login')
}
}
},
mounted: function() {
this.getData()
this.show()
}
}
单门课程示例
{ "_id": { "$oid": "5fc63dab36d8491476999831" },
"courseTitle": "Python For Everybody",
"createdDate": { "$date": 1606852635135 },
"creator": "Admin",
"courseId": 1,
"courseDesc": "Description Lorem Ipsum is simply dummy text of the printing",
"courseCategory": "Programming",
"courseImage": "https://cwpwp2.betterthanpaper.com/wp-content/uploads/2019/06/2-1-1.jpg",
"syllabus": [ { "chapterName": "Introduction to Python 3 Programming Tutorial", "chapterVideo": "eXBD2bB9-RA" }] }
【问题讨论】:
-
API 似乎需要
id参数,那么如果你停止传递它会如何工作? -
是的,我知道。这就是为什么我对如何从 API 获取标题感到困惑(因为 API 需要 id),然后将其设置为路由参数。还是真的不能这样做? @丹
标签: javascript vue.js vuejs2 vue-component vue-router