开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程列表前端(1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11474
课程列表前端(1)
内容介绍:
一、在 api 创建 js 文件,引入接口地址
二、在页面中进行调用
三、在分类中进行遍历
四、对课程进行 v-if 判断
一、在 api 创建 js 文件,引入接口地址
1、查询课程列表的方法
第一步操作,在 API 里面创建一个JS文件,引入接口地址,进入 API,在 API 中,创建课程,修改名字为 cos。
点击 JS,进行复制,复制之后修改一下方法,第一个方法为条件查询再分页,更换一下课程名字为 get。
而在方法中,按照写过的接口,有三个参数,第一个参数是当前页,第二个为每月记录数,第三个是对象,所以有三个参数需要传递,然后写三个当前页每页技术和查询对象。
SearchObj 为查询对象的三个条件,接下来写一下接口地址,“/eduservice/coursefront”,详情请看代码。
@RestController
@RequestMapping("/eduservice/coursefront
”
)
@
CrossOrigin
p
ublic
cl
ass
C
ourse
F
ront
C
ontroller
{
@
Autowired
P
rivate
E
du
C
ourse
S
ervice
c
ourse
S
ervice
:
//1
条件查询带分页查询课程
@PostMapping
(“
getFrontCourseList
/{
page
}
/{limit
}
")
public R getFrontCourseList (
@P
ath
V
ariable
long
page,
@P
ath
V
ariable
long
page
@R
equest
B
ody
(
required = false
) C
ourse
F
ront
V
o
course
F
ront
V
o
)
{
P
age<EduCourse>
pageCourse = new Page<>(page,limit
)
;
Map<String.
O
bject> map
= C
ourse
S
ervice.
getCourseFontList(pageCourse,courseFrontVo)
;
//返回分页所有数据
return. R. ok().data(map);
}
2、查询所有分类的方法
//
添加课程分类
//获取上传过来文件,把文件内容读取出来
@PostMapping("addSubject
”
)
public
R
add
S
ubject
(M
ultiprt
F
ile
file
)
{
//
上传过来excel文件
subjectServic
e.save
S
ubject
(file, subjectservice)
;
return R.ok
() ;
}
/
/
课程分类列表(树形)
@
G
e
tM
appin
g("g
er
AllSu
b
j
e
ct
”
)
public
R
get
A
l
IS
ubject()
{
//list集合泛型是一级分类
L
ist
<O
ne
S
ubject
>
list
= SUBJECTSERVICE
Get
ALLONEIWOSUBJECT
();
return R.ok().data(”list”,list);
getCourselist(page, limit , search0bj)
{
returnrequest(
{
url:
/
eduservice/coursefront/ getFrontCourseList/$
{
page
}
/$
{
limit
}
,
method:'post'
,
data:search0bj
}
)
}
import re
q
u
est from
‘@
/utils/request
’
export default
{
//条件分页课程查询的方法
getCourseList(page, limit, search
O
bj)
return request({
url: /eduservice/coursefront/getFrontCourseList/
${page}/${limit}
,
method:
‘
post
’
,
data:
search
O
b
j
}
)
//讲师详情的方法
getTeacherInfo(id)
{
return request(
{
url:
‘
/eduservice/teacherfront/getTeacherFrontInfo/
$
{id}
’,
method:
‘
get
’
}
)
二、在页面中进行调用
课程列表页面,在 course 里面有一个 index 目录,就是课程列表。
先引入 course
第一个 page 代表当前页,然后第二个 data 这个值,就是课程列表的数值,写数字、写对象都可以,第三个是一级分类列表,
还有一个二级分类,下面这部分代表二级分类里边有这个,这个是一级分类的集合,还有二级分类集合,下面还有一个叫 SearchObj 是查询条件的表单对象。
点击外语考试,下面显示二级分类,点价格最新(包括关注度等值),每次点击这个值都有颜色的变化。比如这个外语考试变成红色,点价格,它的背景色变成绿色,把直线放置,条件查询,选中效果值,红色变成绿色。
初始值就可以定出。接下来写方法,首先用密布结构来写。
import courseApi from
‘
@/api/course'
exportdefault
{
data(
{
return
{
page:1,//当前页
data:
{}
,//课程列表
subjectNestedList:
[ ]
,
//
一级分类列表
subSubjectList:
[ ]
, //二级分类列表
searchobj:
{}
, //查询表单对象
oneIndex:-1,
twoIndex:-1,
buyCountSort:"",
gmtCreateSort:"",
priceSort:""
}
},
created() {
//
课程第一次查询
this
.initCourseFirst( )
//
一级分类显示
this.initSubject( )
},
method
s
:{
//
1
查询第
一
页数据
initCourseFirst()
{
courseApi.getCourselist(1,8,this.search0bj)
.
then(response =>
{
this.data=response.data.data
}
)
},
/
/2
查询所有一级分类
initSubject()
{
courseApi.getAllSubject()
.then(response=>
{
this. subjectNestedList = response.data.data.list
}
)
},
//3分页切换的方法
gotoPage(page)
{
courseApi.getCourseList(page,8,this.search0bj)
.
then( response =>
{
this.data=response.data.data
}
)
}
};
</script>
三、在分类中进行遍历
在页面位置中,首先找到“课程类别”—显示所有的一级分类,下面的位置会显示课程数据。
<li v-for="(item, index)in subjec tNestedL ist" : key="index"><a title="
数据库
"
href="#">
{{
item.
t
itle
}}
</a>
<
/li>
<ulclass-"clearfix">
<liv-for
=
"(item, index) in subSubjectlist" :key=" index"
>
<a title="
职称英语
"
href="#"
>
{{item.title}}</a>
</li
>
<!-- /无数据提示结束-->
<article v-if="data. total>0" class="comm-course- list">
<ulclass="of"id="bna">
<liv-for-"itemindata.items":key="item.id">
<divclass="cc-l-wrap">
<sectionclass="course-img">
<img :src="item.cover" class=" img- responsive" :alt=" item. title">
<divclass="cc-mask">
<а hrеf="/соurѕе/1" tіtlе="
开始学习
" сlаѕѕ="соmm-btn с-btn-1">
开始学习
</а>
</div>
section>
<h3class="hLh30txt0fmt10">
<a href=" /course/1" :title="item. title" class="course-title fsize18 c-333">
{{item.title}}</a>
</h3>
四、对课程进行 v-if 判断
<!-- /无数据提示开始-->
<section class="no- data- wrap" v- if="data. total==0" >
<em class="icon30 no- data- ico">
</em>
<span class="c-666 fsize14 ml10 vam">
没有相关数据,小编正在努力整理中
...</ span>
<
/
section>
<!-- /无数据提示结束-->
karticlev- if="data. total>0" class="comm-course-list">
<ul class="of" id="bna">