37 课程列表前端
1.# 拼接,会将params的内容拼到?后面
this.$axios.get(`${this.$settings.base_url}/course/course_list/`, {
params: {ordering:price,course_category:1}
})
/course/course_list/?ordering=price&course_category=1
2.监听属性
3.this.$route与this.$router
this.$route # 是当前路由对象,parmas :绑定的值 query:?拼接的值 例: { path: '/course/detail/:id', name: 'CourseDetail', component: ActualCourseDetail} console.log(this.$route.params.id) #访问http://192.168.12.30:8080/course/detail/1,可以取出id为1
console.log(this.$route.query.name) #访问http://192.168.12.30:8080/course/detail/?name=18 可以取出18
this.$router # 全局路由
this.$router.go(-1) # 回退到上一个地址
?拼接的值在query里面取,
console.log(this.$route.query.age)
实战课页面 ActuaCourse.vue
class="course">
class="main">
class="condition">
class="cate-list">
- class="title">课程分类:
- class="filter.course_category==0?'this':''" @click="filter.course_category=0">全部
- class="filter.course_category==category.id?'this':''" v-for="category in category_list"
@click="filter.course_category=category.id" :key="category.name">{{category.name}}
class="ordering">
- class="title">筛 选:
- class="default" :class="(filter.ordering=='id' || filter.ordering=='-id')?'this':''"
@click="filter.ordering='-id'">默认
- class="hot" :class="(filter.ordering=='students' || filter.ordering=='-students')?'this':''"
@click="filter.ordering=(filter.ordering=='-students'?'students':'-students')">人气
- class="price"
:class="filter.ordering=='price'?'price_up this':(filter.ordering=='-price'?'price_down this':'')"
@click="filter.ordering=(filter.ordering=='-price'?'price':'-price')">价格
class="condition-result">共{{course_total}}个课程
class="course-list">
class="course-item" v-for="course in course_list" :key="course.name">
class="course-image">
"course.course_img" alt="">
class="course-info">
"'/course/detail/'+course.id">{{course.name}}
"@/assets/img/avatar1.svg" alt="">{{course.students}}人已加入学习
class="teather-info">
{{course.teacher.name}} {{course.teacher.title}} {{course.teacher.signature}}
if="course.sections>course.pub_sections">共{{course.sections}}课时/已更新{{course.pub_sections}}课时
else>共{{course.sections}}课时/更新完成
class="section-list">
- for="(section, key) in course.section_list" :key="section.name"><span
class="section-title">0{{key+1}} | {{section.name}}
class="free" v-if="section.free_trail">免费
class="pay-box">
if="course.discount_type">
class="discount-type">{{course.discount_type}}
class="discount-price">¥{{course.real_price}}元
class="original-price">原价:{{course.price}}元
else class="discount-price">¥{{course.price}}元
class="buy-now">立即购买
class="course_pagination block">
pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="filter.page"
:page-sizes="[2, 3, 5, 10]"
:page-size="filter.page_size"
layout="sizes, prev, pager, next"
:total="course_total">
ActualCourseDetail.vue(当点击实战课的某一个课程,跳转到此页面)
课程详情