课程管理-修改课程信息(前端)| 学习笔记

简介: 简介:快速学习课程管理-修改课程信息(前端)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程管理-修改课程信息(前端)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11380


课程管理-修改课程信息(前端) 

 

内容介绍

一、api 部分

二、页面中

三、实现数据回显

四、总结

五、效果展示

六、图例展示

 

一、api 部分

修改课程信息的前端部分,按照过程。第一部分是在 api 中把方法定义一下,之后再进行操作。

找到 course.js 之前有添加课程信息和查询所有讲师两个,在之后添加逗号。继续添加根据课程 id 查询课程基本信息和修改课程信息的代码。

1.根据课程 id 查询课程基本信息

按照之前查询所有讲师的代码,进行修改。将方法名改为 getCourseInfoId,同时传入课程 id 为参数。

l 代码如下:

getCourseInfoId( id) {

}

写上之前编写的根据课程 id 查询课程基本信息 getCourseInfo 接口,在后面加上id值,写法多种方式,可以使用/${课程id}表达式的方式,也可以使用拼接,两者效果一致。使用拼接 id 值时要注意/ eduservice/teacher/ getCourseInfo/ 最后的斜杠/不能省略,省略后会变为/ eduservice/teacher/ getCourseInfo1233会直接将 getCourseInfo1233作为方法。

l 代码如下:

//其中的teacher错误,在测试时应更改为course

url: / eduservice/teacher/ getCourseInfo/ ' +id,

使用get提交方式。

l 代码如下:

method: 'get'

l course.js添加完整代码如下:

//根据课程id查询课程基本信息

//将方法名改为getCourseInfoId,同时传入课程id为参数

getCourseInfoId(id){

return request({

//更改接口名为根据课程id查询课程基本信息对应的getCourseInfo接口

//其中的teacher错误,在测试时应更改为course

url: / eduservice/teacher/ getCourseInfo/ ' +id,

//提交方式为get提交

method: 'get'

})

},

以上就是一个 id 查询接口。

2. 修改课程信息

修改的接口方法定义,更名为 updateCourseInfo。

l 代码如下:

updateCourseInfo( courseInfo) {

}

因为修改要传的参数是一个对象,所以参数命名为 courseInfo。之后更改接口名为updateCourseInfo,没有 id 所以删除之后的 id 和/符号。

l 代码如下:

//其中的 teacher,在测试时应更改为 course

url: / eduservice/teacher/ updateCourseInfo ,

提交方式为 post,同时因为使用的是 requestbody 的 json 传递,所以添加 data:courseInfo。

l 代码如下:

method: 'post ' ,

data: courseInfo

l course.js添加完整代码如下:

//修改课程信息

//将方法名改为updateCourseInfo,同时将要传的参数命名为courseInfo

updateCourseInfo( courseInfo) {

return request({

//更改接口名为修改课程信息对应的updateCourseInfo接口

//其中的teacher错误,在测试时应更改为course

url: / eduservice/teacher/ updateCourseInfo ,

//提交方式为post提交

method: 'post' ,

//因为使用的是requestbody的json传递,所以添加data。

data: courseInfo

})

}

至此两个接口就定义完毕,一个id查询一个修改。

 

二、页面中

在页面中,首先第一部分要实现点上一步的时候能够回到页面中作修改的方法previous。找到页面中的 previous 方法做修改,将之前的1改为在 created()中this.courseId = this.$route.params.id 得到的课程id值,包括跳转到第二步时也改为课程 id 值。

l 代码如下:

previous( ) {

//得到当前页面中得到的课程id

this.$router.push({path: /course/ info/ '+this.courseId})

}

next( ) {

//跳转到第二步,同时当前页面的得到的课程id

this.$router.push<{path: / course/publish/'+this.courseId)

}

 

三、实现数据回显

1.分析

第三步就是在数据回显页面 info 页面实现数据回显。当点击上一步,要回到 info页面,然后将课程 id 值 this.courseId 能传过去。在 info 页面中的路径后会显示课程id 值,首先得到课程 id 再调用接口根据 id 查出数据内容做个回显即可。所以在页面中首先获取路由课程 id,调用根据 id 查询接口,最后实现数据显示。

2.info.vue中

① data()部分

现在 data 中定义 courseId 初始值,方便后续使用。

l 代码如下:

courseId: 

② methods 部分

编写根据课程 id 查询的getInfo方法,在其中引用导入的course中的getCourseInfoId 方法,同时传入取到的课程 id 参数 this.courseId。之后.then 使用箭头函数将其中的值取出来,方便后续使用。同时将课程信息复制给 courseInfo中有 v-model 有数据回显的效果。

l 代码如下:

getInfo(){

//定义根据课程id查询的方法getCourseInfoId,传入当前页面获取的课程id值

course.getCourseInfoId(this.courseId)

then( response => {

//使用responce箭头函数获取课程信息,再赋给courseInfo中

this.courseInfo = response.data.courseInfovo

})

}

该方法就是根据路由的id值得到课程的信息。

③ created()部分

来到created()中,首先获取路由id值。得到之后将其赋值给初始化的this.courseId。

l 代码如下:

//获取路由id值

if(this.$route.params 8& this.$route.params.id) {

this.courseId = this.$route-params.id

}

之后调用接口根据课程 id 查询的方法

l 代码如下:

//调用根据id查询课程的方法

this.getInfo()

l 完整代码如下:

created(){

//获取路由id值

if(this.$route.params 8& this.$route.params.id) {

this.courseId = this.$route.params.id

//调用根据id查询课程的方法

this.getInfo()

}

//初始化所有讲师

this.getListTeacher()

//初始化一级分类

this.getoneSubject()

},

 

四、总结

到此基本思路就全部完成。在页面中,做法是首先取到路由中的 id 值,因为要根据课程 id 查询基本信息。

而路由中的 id 值在页面代码 chapter.vue 的 previous 中就已经传过来了,我们在info.vue 中 created()将其取到将其赋给我们初始化好的变量 courseId。

最后调用 methods()中 getInfo()方法根据课程 id 将课程信息查询出来在页面中做回显,即复制给 courseInfo,因为 courseInfo 在之前代码中写到了v-model所以可以做到数据回显,以上就是前端部分做到的初步效果。

 

五、效果展示

完成之后,查看效果如何。首先启动代码,启动后,来到前端页面,添加一条新数据:标题为10100303,一级分类为前端开发,二级分类为JavaScript,课程讲师为王五,总课时为10,课程简介为111,课程封面默认,课程价格为10。

成功将数据添加到数据库之后,来到第二步发现第一次没有大纲,加完代码后才有。此时点击上一步,查看是否返回上一页面同时完成数据回显,同时路由器的id值会被传到页面中,因为它是课程 id。

image.png

发现显示报错:

NetWork Error,通常是因为接口错误。

首先我们点f12查看其中具体报的是什么错,发现其中的状态码为403。而403错误一般分为两种,第一是跨域产生的,第二是因为路径写错了。除此之外没有其他可能。

在 EduCourseController 代码中查看跨域的注解说明发现没有问题,那么可能是前端 course.js 中路径的问题,发现是在编写接口代码时路径名忘改成 course,包括在错误提示中也有提示在9001/eduservice/teacher/getCourSeInfo/12345674688228364289报的403()。此时接口中是没有 teacher,此时报的就是该问题。而出现Access -Control-Allow-Origin而并未出现403也表示着跨域和路径写错两种问题。

所以将接口路径的 teacher 改为 course

l 代码如下:

//根据课程id查询课程基本信息

getCourseInfoId(id){

return request({

url: / eduservice/course/ getCourseInfo/ ' +id,

method: 'get'

})

},

//修改课程信息

updateCourseInfo( courseInfo) {

return request({

url: / eduservice/course/ updateCourseInfo ,

method: 'post' ,

data: courseInfo

})

}

 

六、图例展示

接口做到之后,我们来开发前端。

第一步在 api 里面 course.js定义接口两个方法

第二步修改 chapter 页面,跳转路径,将路径能加上课程id

previous( ) {课程 id

this.$router.push({path: " /course/ info/ '+this.courseId})

}

第三步在 info 页面实现数据回显

获取路由课程 id,调用根据id查询接口,数据显示。

created(){

//获取路由id值

if(this.$route.params 8& this.$route.params.id) {

this.courseId = this.$route.params.id

//调用根据id查询课程的方法

this.getInfo()

}

根据取到的 id 值调用方法,方法中为根据 id 作查询,得到最终的数据。

methods:{

//根据课程id查询

getInfo(){

course.getCourseInfoId(this.courseId)

.then( response => {

this.courseInfo = response.data.courseInfovo

})

}

上面代码测试,出现403状态码

403()

1. 跨域

2. 路径写错了

相关文章
|
存储 前端开发 JavaScript
课程管理-修改课程信息(前端) | 学习笔记
简介:快速学习课程管理-修改课程信息(前端)
80 0
课程管理-修改课程信息(前端) | 学习笔记
|
存储 前端开发 JavaScript
课程管理-修改课程信息(最终实现) | 学习笔记
简介:快速学习课程管理-修改课程信息(最终实现)
168 0
课程管理-修改课程信息(最终实现) | 学习笔记
|
前端开发 数据库 开发者
课程管理-修改课程信息(后端) | 学习笔记
简介:快速学习课程管理-修改课程信息(后端)
115 0
课程管理-修改课程信息(后端) | 学习笔记
|
JavaScript 前端开发 Java
课程管理-课程列表 | 学习笔记
快速学习课程管理-课程列表
142 0
课程管理-课程列表 | 学习笔记
|
开发者 微服务
课程管理-删除课程(后端) | 学习笔记
简介:快速学习课程管理-删除课程(后端)
192 0
课程管理-删除课程(后端) | 学习笔记
|
前端开发 API 数据库
课程管理-删除视频前端 | 学习笔记
简介:快速学习课程管理-删除视频前端
105 0
课程管理-删除视频前端 | 学习笔记
|
前端开发 数据库 开发者
课程管理-添加和删除小节 | 学习笔记
简介:快速学习课程管理-添加和删除小节
114 0
课程管理-添加和删除小节 | 学习笔记
|
前端开发 Java 开发者
课程管理-添加课程信息前端(1) | 学习笔记
简介:快速学习课程管理-添加课程信息前端(1)
101 0
课程管理-添加课程信息前端(1) | 学习笔记
|
前端开发 数据建模 应用服务中间件
课程管理-添加小节上传视频(前端) | 学习笔记
简介:快速学习课程管理-添加小节上传视频(前端)
190 0
课程管理-添加小节上传视频(前端) | 学习笔记
|
前端开发 Java API
课程管理-课程大纲列表(前端) | 学习笔记
快速学习课程管理-课程大纲列表(前端)
88 0