查看
新增
删除
王小虎
2.3 案例
其他的组件我们通过完成一个页面来学习。
我们要完成如下页面效果
要完成该页面,我们需要先对这个页面进行分析,看页面由哪儿几部分组成,然后到官网进行拷贝并修改。页面总共有如下组成部分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3bPLoHn-1642766557864)(assets/image-20210831185505106.png)]
还有一个是当我们点击 新增
按钮,会在页面正中间弹出一个对话框,如下
2.3.1 准备基本页面
2.3.2 完成表格展示
使用 Element 整体的思路就是 拷贝 + 修改。
2.3.2.1 拷贝
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMgO0W94-1642766557868)(assets/image-20210831185937618.png)]
在左菜单栏找到 Table 表格
并点击,右边主体就会定位到表格这一块,找到我们需要的表格效果(如上图),点击 显示代码
就可以看到这个表格的代码了。
将html标签拷贝到 <div id="app"></div>
中,如下:
将css样式拷贝到我们页面的 head
标签中,如下
将方法和模型数据拷贝到 Vue 对象指定的位置
拷贝完成后通过浏览器打开可以看到表格的效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZRblRMg-1642766557868)(assets/image-20210831191234876.png)]
表格效果出来了,但是显示的表头和数据并不是我们想要的,所以接下来就需要对页面代码进行修改了。
2.3.2.2 修改
- 修改表头和数据
下面是对表格代码进行分析的图解。根据下图说明修改自己的列数和列名
修改完页面后,还需要对绑定的模型数据进行修改,下图是对模型数据进行分析的图解
- 给表格添加操作列
从之前的表格拷贝一列出来并对其进行修改。按钮是从官网的 Button 按钮
组件中拷贝并修改的
- 给表格添加复选框列和标号列
给表格添加复选框和标号列,效果如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEPH4WFH-1642766557868)(assets/image-20210831193216143.png)]
此效果也是从 Element 官网进行拷贝,先找到对应的表格效果,然后将其对应代码拷贝到我们的代码中,如下是复选框列官网效果图和代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwBPbLcq-1642766557869)(assets/image-20210831193601788.png)]
这里需要注意在 <el-table>
标签上有一个事件 @selection-change="handleSelectionChange"
,这里绑定的函数也需要从官网拷贝到我们自己的页面代码中,函数代码如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5gt2ey2b-1642766557870)(assets/image-20210831194013986.png)]
从该函数中又发现还需要一个模型数据 multipleSelection
,所以还需要定义出该模型数据
标号列也用同样的方式进行拷贝并修改。
2.3.3 完成搜索表单展示
在 Element 官网找到横排的表单效果,然后拷贝代码并进行修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-94LGGqvd-1642766557870)(assets/image-20210831194300357.png)]
点击上面的 显示代码
后,就会展示出对应的代码,下面是对这部分代码进行分析的图解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsgi44F3-1642766557870)(assets/image-20210831194835721.png)]
然后根据我们要的效果修改代码。
2.3.4 完成批量删除和新增按钮展示
从 Element 官网找具有着色效果的按钮,并将代码拷贝到我们自己的页面上
2.3.5 完成对话框展示
在 Element 官网找对话框,如下:
下面对官网提供的代码进行分析
上图分析出来的模型数据需要在 Vue 对象中进行定义。
2.3.6 完成分页条展示
在 Element 官网找到 Pagination 分页
,在页面主体部分找到我们需要的效果,如下
点击 显示代码
,找到 完整功能
对应的代码,接下来对该代码进行分析
上面代码属性说明:
-
page-size
:每页显示的条目数 -
page-sizes
: 每页显示个数选择器的选项设置。
:page-sizes="[100,200,300,400]"
对应的页面效果如下:
-
currentPage
:当前页码。我们点击那个页码,此属性值就是几。 -
total
:总记录数。用来设置总的数据条目数,该属性设置后, Element 会自动计算出需分多少页并给我们展示对应的页码。
事件说明:
-
size-change
:pageSize 改变时会触发。也就是当我们改变了每页显示的条目数后,该事件会触发。 -
current-change
:currentPage 改变时会触发。也就是当我们点击了其他的页码后,该事件会触发。
2.3.7 完整页面代码
<el-button type=“primary” @click=“onSubmit”>查询
批量删除
<el-button type=“primary” plain @click=“dialogVisible = true”>新增
<el-dialog
title=“编辑品牌”
:visible.sync=“dialogVisible”
width=“30%”>
<el-switch v-model=“brand.status”
active-value=“1”
inactive-value=“0”
<el-button type=“primary” @click=“addBrand”>提交
<el-button @click=“dialogVisible = false”>取消
<el-table
:data=“tableData”
style=“width: 100%”
:row-class-name=“tableRowClassName”
@selection-change=“handleSelectionChange”>
<el-table-column
type=“selection”
width=“55”>
<el-table-column
type=“index”
width=“50”>
<el-table-column
prop=“brandName”
label=“品牌名称”
align=“center”>
<el-table-column
prop=“companyName”
label=“企业名称”
align=“center”>
<el-table-column
prop=“ordered”
align=“center”
label=“排序”>
<el-table-column
prop=“status”
align=“center”
label=“当前状态”>
<el-table-column
align=“center”
label=“操作”>
修改
删除
<el-pagination
@size-change=“handleSizeChange”
@current-change=“handleCurrentChange”
:current-page=“currentPage”
:page-sizes=“[5, 10, 15, 20]”
:page-size=“5”
layout=“total, sizes, prev, pager, next, jumper”
:total=“400”>
3.1 功能介绍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aoux3IB2-1642766557871)(./assets/image-20210825171411003.png)]
以上是我们在综合案例要实现的功能。对数据的除了对数据的增删改查功能外,还有一些复杂的功能,如 批量删除
、分页查询
、条件查询
等功能
-
批量删除
功能:每条数据前都有复选框,当我选中多条数据并点击批量删除
按钮后,会发送请求到后端并删除数据库中指定的多条数据。 -
分页查询
功能:当数据库中有很多数据时,我们不可能将所有的数据展示在一页里,这个时候就需要分页展示数据。 -
条件查询
功能:数据库量大的时候,我们就需要精确的查询一些想看到的数据,这个时候就需要通过条件查询。
这里的 修改品牌
和 删除品牌
功能在课程上不做讲解,留作同学来下的练习。
3.2 环境准备
环境准备我们主要完成以下两件事即可
-
将资料的 brand-case 模块导入到 idea中
-
执行资料中提供的 tb_brand.sql脚本
3.2.1 工程准备
将 04-资料\01-初始工程
中的 brand-case
工程导入到我们自己的 idea 中。工程结构如下:
3.2.2 创建表
下面是创建表的语句
– 删除tb_brand表
drop table if exists tb_brand;
– 创建tb_brand表
create table tb_brand (
– id 主键
id int primary key auto_increment,
– 品牌名称
brand_name varchar(20),
– 企业名称
company_name varchar(20),
– 排序字段
ordered int,
– 描述信息
description varchar(100),
– 状态:0:禁用 1:启用
status int
);
– 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values
(‘华为’, ‘华为技术有限公司’, 100, ‘万物互联’, 1),
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
401113)]
[外链图片转存中…(img-PnD0wkLq-1712319401114)]
[外链图片转存中…(img-P8fVxqxh-1712319401114)]
[外链图片转存中…(img-JNYwaC0n-1712319401114)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-2ragamE0-1712319401114)]
react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
[外链图片转存中…(img-aIMYEN6c-1712319401115)]
[外链图片转存中…(img-mw05Gc0C-1712319401115)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算