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

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

开发者学堂课程【微服务+全栈在线教育实战项目演练(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. 路径写错了

相关文章
|
存储 网络安全 网络架构
网络技术基础(5)——VRP和telnet
VRP(Versatile Routing Platform)是其数据通信产品的操作系统,支持路由器和交换机的高效运行,提供统一用户界面和控制平面功能。VRP通过组件化结构实现功能裁剪和扩展。设备初始化时,BootROM先启动,然后运行系统软件,从默认路径读取配置文件。管理设备可通过命令行或Web网管,命令行包括用户界面和级别控制,提供权限管理。文件系统管理涉及存储设备如SDRAM、Flash、NVRAM等。用户可使用 PuTTY 工具通过Console口本地登录,或通过SSH远程登录。VRP命令行具有编辑和在线帮助功能,提供undo命令恢复默认设置。
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
1885 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
6月前
|
Ubuntu Linux Shell
Linux环境下VSCode快速安装终极指南:debian/ubuntu/linux平台通用
以上就是在Linux环境下安装VSCode的终极指南,抛开繁复的专业词汇,以平易近人的文字、形象生动的比喻让你轻松学会这一过程。别忘了,你的小伙伴VSCode已经在应用菜单里等你了!
1733 23
|
Python
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
895 6
Numpy学习笔记(一):array()、range()、arange()用法
|
C++ 计算机视觉
Visual Studio 2019 的属性窗口没有Microsoft.CPP.x64.user
本文介绍了解决Visual Studio 2019属性窗口缺少"Microsoft.CPP.x64.user"配置文件的问题,通过创建缺失的配置文件并重新启动VS来解决。
|
11月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
611 15
|
机器学习/深度学习 算法 数据处理
探索XGBoost:多分类与不平衡数据处理
探索XGBoost:多分类与不平衡数据处理
1387 6
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能设备故障预测与维护
【10月更文挑战第10天】 使用Python实现深度学习模型:智能设备故障预测与维护
1787 2
|
前端开发 BI
前端基础(十)_标签分类(行级标签、块级标签、行块标签)
本文阐述了HTML标签的分类,包括行级标签、块级标签和行块标签,并展示了如何使用CSS的display属性实现标签类型之间的转换。
577 3
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。