课程管理-修改章节 | 学习笔记

简介: 简介:快速学习课程管理-修改章节

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

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


课程管理-修改章节

 

内容介绍:

一、 添加章节测试

二、 修改章节功能

三、 效果测试

 

一、添加章节测试

1.过程

下面对效果进行进一步测试,首先来到页面点击 ctrlf5 刷新,点击天添加章节,在其中填入章节名称:第一章 测试1123,设置章节排序为1。

点击确定,提示添加章节成功,同时弹框也消失了。同时因为刷新了页面,添加的数据也在页面中做了显示,至此数据就添加成功。

2.小 bug

在这个过程中会有一个 bug,再次点击添加章节时,里面显示的仍然是上次的数据。

而正确的表单数据应该是重新清空,要向解决这个小 bug只需要将表单数据清空即可。

之前是直接在添加章节中定义了一个值,但此时我们将值写在方法openChapterDialog()中去,即在添加章节中添加一个 openChapterDialog()方法。

l 原代码如下

<el-button type="text" @click="dialogChapterFormVisible=true>添加章节< /el-button>

l 更改代码如下:

<el-button type="text" @click="openChapterDialog()>添加章节< /el-button>

3.methods处

通过此 openChapterDialog()方法来实现弹框,在页面代码 chapter.vue 中的methods 里面添加方法。

l openChapterDialog()代码如下:

//弹出添加章节页面方法名为openChapterDialog

openChapterDialog() {

//弹框通过令dialogChapterFormvisible值为true实现弹框

this.dialogChapterFormvisible = true

//表单数据清空因为第一次添加没有错误,而第二次添加上次的内容仍然显示,所以将其清空。可以使用对象清空,在此单独将值清空。

//标题清空

this.chapter.title = ‘ ’

//排序清空

this.chapter.sort = 0

},

为了方便添加修改章节的方法,定义一个新的 addChapter()方法将saveOrUpadate()代码放入saveOrUpadate()中调用 addChapter方法

l methods 最终添加代码如下:

methods:{

//弹出添加章节页面方法名为openChapterDialog

openChapterDialog() {

//弹框通过令dialogChapterFormvisible值为true实现弹框

this.dialogChapterFormvisible = true

//表单数据清空因为第一次添加没有错误,而第二次添加上次的内容仍然显示,所以将其清空。可以使用对象清空,在此单独将值清空。

//标题清空

this.chapter.title = ‘ ’

//排序清空

this.chapter.sort = 0

},

//添加章节将原来saveOrUpadate()方法代码复制放入

addchapter() {

//设置课程id到chapter对象里面

this.chapter.courseId = this.courseId

chapter.addchapter( this.chapter)

.then( response => {

//关闭弹框

this.dialogChapterFormvisible = false

//提示

this.$message({

type: 'success" ,

message:‘添加章节成功!‘

});

//刷新页面

this.getchaptervideo()

})

saveorUpdate() {

//调用addChapter(),为了方便之后添加修改章节的方法。

this.addChapter()

3. 总结

刚才修改的内容,主要是将添加章节按钮中绑定一个事件,其中加一个openChapterDialog()方法。openChapterDialog()方法中就是弹框,清空表单,做到之后。

弹框点击保存执行 saveorUpdate()方法,就会调用 addChapter()添加方法。

4. 最终测试

再次输入测试数据:章节标题:第二章11,章节排序2,点击保存。

再次点击添加章节按钮,弹框中表单数据成功清空,没有出现上一次添加的内容,bug 消失。

image.png

比如再次输入,章节标题:第三章,章节排序:3。点击确定,提示成功添加,到此就全部完成。

在完成此功能,要注意的问题是 this.chapter.courseId = this.courseId 的手动传值部分,需要手动传一个课程 id,作添加章节时需要使用。


二、修改章节功能

完成添加按钮后,要添加修改功能在每个章节后添加一个修改按钮,当点击修改按钮时可以实现页面回显,因为添加是弹框所以修改也可以实现弹框其中回显出现之前的数据内容,以便修改内容。而当修改完成后点击确定按钮就可以对应修改数据库中的内容。

image.png

接下来需要实现的功能即在每个章节后添加一个修改按钮,当点击修改按钮就可以弹框实现数据回显,最终去修改数据库的内容。

1. 添加修改按钮

复制课件01-课程大纲列表显示的按钮部分代码,将代码复制到页面代码21行{{chapter.title}}下方。

l 01-课程大纲列表显示的按钮部分代码如下:

<span class="acts">

//添加课时按钮暂时去除,不做使用

//<el-button type="text”>添加课时</el-button>

<el-button style="" type="text">编辑</el-button>

<el-button type="text”>删除</el-button>

</span>

</p>

添加代码后,可以发现页面中会出现编辑和删除按钮之后当点击编辑按钮,就会弹个框然后就会实现数据回显,修改数据库内容

image.png

2. 数据回显

① 绑定事件

要实现数据回显,首先在编辑里绑定一个事件 openEditChapter,但在修改数据时,首先要根据 id 查询做回显,所以在方法中传入章节 id而在此是处于<li中v-for 里面含有一个 chapter。所以,根据 chapter.id 将这个 id 值得到,之后再对数据作修改。

l 代码如下:

<!--章节-->

<ul class="chanpterList">

<li

v-for="chapter in chaptervideoList"

: key="chapter. id">

<p>

{{ chapter.title }}

<span class="acts">

//给编辑按钮绑定openEditChatper(chapter.id)方法。

<el-button style="" type="text" @click= "openEditChatper(chapter.id)">编辑</el-button>

<el-button type="text”>删除</el-button>

</span>

</p>

② 创建 openEditChatper 方法

在页面代码 methods 处创建出修改章节弹框数据回显方法,方法中有一个章节id,在方法中传入的形参 chapterid 得到章节 id,根据 id 调用接口最终做数据回显就可以做到。

l 代码如下:

//修改章节弹框数据回显

openEditChatper(chapterid){

//弹框dialogChapterFormvisible值为true

this.dialogChapterFormvisible = true

//调用接口

chapter.getChapter(chapterId

.then(response => {//.then加上剪头函数,以实现查询

//调用接口,得到数据后再作赋值。this.chapter表示v-for中定义的对象。

this.chapter = response.data.chapter

})

}

到此点击编辑按钮,出现弹框之后实现数据回显到此全部完成。首先是将章节 id 传入 openEditChatper 过来,传完之后将弹框显示,再根据 id 调接口查询,最终返回chapter 对象,chapter 对象在之前的 v-for 做了双向绑定,可以将数据的值显示出来。

③ 效果测试

最后查看效果,来到页面点击刷新。点击第一章的编辑按钮,发现会对应弹框,同时弹框中含有第一章数据回显的内容。

image.png

点击第二章的编辑按钮,同理显示。

image.png

之后要实现的就是点击每章编辑按钮后,可以在出现的弹框中修改内容最后保存到数据库中。

3. 修改内容

① 过程

来到页面代码中,在之前点击确定调用的是 addChapter()方法作添加操作。

首先添加一个修改章节的方法 updatechapter() ,因为修改和添加都是点按钮时调用所以要saveOrUpdate()添加一个判断,判断章节中是否有id,如果没有id做添加操作,如果有 id 做修改操作。

//修改章节的方法

updatechapter() {

//修改方法,传入参数chapter

chapter.updateChapter(this.chapter)

.then( response =>{//箭头函数,表示下一步进行

//关闭弹框

this.dialogChapterFormvisible = false

//提示

this.$message({

type: 'success' ,

message: '修改章节成功!’

});

//刷新页面

this.getchaptervideo( )

})

),

if(!this.chapter.id){//是否有id

//如果没有id,做添加操作

this.addChapter()

} else {//如果有id

//做修改操作

this.updatechapter()

}

② 总结

第一步,点击编辑按钮后,首先会弹框根据传入的章节 id 做查询。第二步,查询后实现数据回显,再对弹框的内容调用 saveOrUpadate 做判断,如果没有 id,作添加操作;如果有 id,做修改,调用 updateChapter 接口做到,到此修改过程完成。

 

三、效果测试

来到页面,点击课程标题为:第一章 测试1123的编辑按钮。

在出现的弹框中,将章节标题改为第一章 测试 upupup 点击确定。

image.png

发现页面中显示修改章节成功,同时第一章的课程标题变为:第一章 测试 upupup,即修改章节功能到此成功。

相关文章
|
SQL 存储 缓存
值得收藏!my.cnf配置文档详解
MySql对于开发人员来说应该都比较熟悉,不管是小白还是老码农应该都能熟练使用。但是要说到的各种参数的配置,我敢说大部分人并不是很熟悉,当我们需要优化mysql,改变某项参数的时候。还是要到处在网上查找,有点不方便。今天就把我所知道的MySql的配置文件my.cnf做一个简单的说明吧,注意,我总结的mysql是Linux环境下的。
值得收藏!my.cnf配置文档详解
|
Linux 网络安全 数据安全/隐私保护
【实用】防暴力破解服务器ssh登入次数
【实用】防暴力破解服务器ssh登入次数
760 0
|
6月前
|
机器学习/深度学习 数据采集 人工智能
基于生成式物理引擎的AI模型训练方法论
本文探讨了基于生成式物理引擎的AI模型训练方法论,旨在解决传统数据采集高成本、低效率的问题。生成式物理引擎结合物理建模与生成模型(如GAN、Diffusion),可模拟现实世界的力学规律,生成高质量、多样化的虚拟数据。文章介绍了其关键技术,包括神经网络物理建模、扩散模型场景生成及强化学习应用,并分析了其在机器人学习、数据增强和通用智能体训练中的实践价值。未来,随着可微物理引擎、跨模态生成等技术发展,生成式物理引擎将助力AI从静态监督学习迈向动态交互式世界建模,推动通用人工智能的实现。
369 57
基于生成式物理引擎的AI模型训练方法论
|
11月前
|
Web App开发 安全 前端开发
一个接口4个步骤轻松搞定最新版Chrome、Edge、Firefox浏览器集成ActiveX控件
目前的浏览器市场,谷歌浏览器占据了半壁江山,因此,谷歌也是最有话语权的,2015年开始取消支持 NPAPI 插件,2022 年10月停止支持 PPAPI 插件;而曾经老大哥IE浏览器也已停止服务,退出历史舞台,导致大量曾经安全、便捷的ActiveX控件无法使用。为了解决这个难题,本人特研发出allWebPlugin中间件,重新让所有ActiveX控件能在谷歌、火狐等浏览器使用。
|
11月前
|
前端开发 Java 开发者
【springboot】中使用--WebMvcConfigurer
通过实现 `WebMvcConfigurer` 接口,Spring Boot 开发者可以灵活地自定义和扩展 Spring MVC 的配置。无论是视图解析、拦截器、跨域请求处理,还是静态资源和消息转换器配置,`WebMvcConfigurer` 都提供了一致的接口来实现这些功能。掌握这些配置方法,可以使开发者在 Spring Boot 项目中更加游刃有余地进行各种定制化需求的开发。
579 14
|
数据处理
正则表达式详解:解析星号的含义
【4月更文挑战第3天】
2244 1
正则表达式详解:解析星号的含义
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
本文将带你走进Node.js的世界,从基础到进阶,逐步解析Node.js在后端开发中的应用。我们将通过实例来理解Node.js的异步特性、事件驱动模型以及如何利用它处理高并发请求。此外,文章还会介绍如何搭建一个基本的Node.js服务器,并探讨如何利用现代前端框架与Node.js进行交互,实现全栈式开发。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
446 4
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
262 5
|
关系型数据库 MySQL 数据库
MySQL删除全局唯一索引unique
这篇文章介绍了如何在MySQL数据库中删除全局唯一的索引(unique index),包括查看索引、删除索引的方法和确认删除后的状态。
786 9