element-ui圖像組件、上傳組件以及分頁(yè)組件實(shí)現(xiàn)代碼
一、圖像組件
< el-image>:保留了原生的img的屬性
<el-image
style="width: 100px; height: 100px"
:src="url"
:fit="fit">
</el-image>
//1.src屬性:圖像的地址,綁定變量用來(lái)指定圖片的地址,通常需要使用require來(lái)拉取圖片
//2.fit屬性:確定圖片如何適應(yīng)到容器框('fill', 'contain', 'cover', 'none', 'scale-down')
//3.lazy屬性:圖片懶加載(按需加載)二、導(dǎo)航菜單(NavMenu)
1、導(dǎo)航方向:通過(guò)mode屬性設(shè)置
2、菜單項(xiàng)
<el-menu mode="方向" background-color="背景色" text-color="文本顏色"
default-active="默認(rèn)打開的菜單"
active-text-color="活動(dòng)的菜單的文本的顏色">
<el-submenu index="1"> //菜單項(xiàng)
<template slot="title"> //標(biāo)題文本
<i class="el-icon-notebook-2"></i> //文本前的圖標(biāo)
<span>在線教材</span>
</template>
<el-menu-item index="1-1"> //子菜單項(xiàng)
<router-link to="/books" class="link">出版圖書</router-link>
</el-menu-item>
<el-menu-item index="1-2">教案管理</el-menu-item>
<el-menu-item index="1-3">教材管理</el-menu-item>
</el-submenu>
//disabled屬性:表示該菜單項(xiàng)不可用三、上傳組件:Upload
<el-upload
class="avatar-uploader"
style="margin-left: 30px;"
drag
action="http://localhost:8089/books/upload"
:show-file-list="false"
:on-change="handlePreview"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
multiple >
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i class="el-icon-upload"></i>
<div class="el-upload__text">將圖書圖片拖到此處,或<em>點(diǎn)擊上傳</em></div>
<div class="el-upload__tip" slot="tip">只能上傳jpg/png文件,且不超過(guò)2M</div>
/el-upload>
//1.drag屬性:表示是否啟用拖拽上傳
//2.action屬性:上傳服務(wù)器的地址
//3.show-file-list: 是否顯示已上傳文件列表(true/false)
//4.data:上傳時(shí)是否需要附帶額外的參數(shù)
//5.multiple:是否可以上傳多個(gè)文件
//6.on-change事件:當(dāng)上傳文件的內(nèi)容發(fā)生改變時(shí)觸發(fā),
//7.on-success事件:當(dāng)上傳成功后觸發(fā)
//8.before-upload事件:在上傳之前觸發(fā)(通常用于檢查上傳文件的格式、大小)
對(duì)應(yīng)的代碼:
//before-upload事件的處理函數(shù):圖片上傳之前的驗(yàn)證
beforeAvatarUpload(file) {
const isJPG = (file.type === 'image/jpeg'||'image/png');
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上傳頭像圖片只能是 JPG 格式!');
this.imageUrl = ''
}
if (!isLt2M) {
this.$message.error('上傳頭像圖片大小不能超過(guò) 2MB!');
this.imageUrl = ''
}
return isJPG && isLt2M;
},
//on-change事件的處理函數(shù):顯示圖片
handlePreview(file){
console.log('#####:',file)
this.imageUrl = URL.createObjectURL(file.raw)
},
//on-success事件觸發(fā)的函數(shù):圖片上傳成功后
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},示例:
(1)使用elementUI的上傳組件將圖片上傳到服務(wù)器并保存到數(shù)據(jù)庫(kù)中
(2)在el-table控件中將上傳的圖片顯示出來(lái)
實(shí)現(xiàn)過(guò)程:
(1)給數(shù)據(jù)庫(kù)中的數(shù)據(jù)表增加一列(image_url):保存圖片在服務(wù)器中存儲(chǔ)路徑
(2)在服務(wù)器端給BookModel增加一個(gè)屬性imageUrl,該屬性映射的是數(shù)據(jù)表中的image_url列
(3)在前端組件中使用FormData對(duì)數(shù)據(jù)進(jìn)行打包:將表單控件的值和el-upload組件的值
? A、在組件的data中增加變量:uploadImage存放用戶選擇的文件信息
let formData = new FormData()formData.append('bookName',this.form.bookName)formData.append('bookAuthor',this.form.bookAuthor)formData.append('publishTime',this.form.publishTime)formData.append('bookPrice', this.form.bookPrice)formData.append('uploadImage', this.uploadImage)
? B、將formData提交給服務(wù)器端的接口
? (4)在后臺(tái)接口中使用formidable模塊來(lái)解析formData中的數(shù)據(jù)
? (5)將上傳到服務(wù)器端的圖片在客戶端的表格(el-table)中顯示出來(lái)
四、分頁(yè)組件
1、實(shí)現(xiàn)分頁(yè)的方式:
? (1)服務(wù)器端分頁(yè):通過(guò)底層的數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),前端會(huì)頻繁的和服務(wù)器交互,客戶端每次請(qǐng)求的是分頁(yè)的數(shù)據(jù)而不是所有數(shù)據(jù)
? (2)前端分頁(yè):一次性從數(shù)據(jù)庫(kù)中取出數(shù)據(jù)緩存起來(lái),然后對(duì)緩存中的數(shù)據(jù)進(jìn)行分頁(yè)處理
2、實(shí)現(xiàn)分頁(yè)的要素:
? (1)總記錄數(shù)
? (2)每頁(yè)顯示的記錄數(shù)
? (3)需要的頁(yè)數(shù)
? (4)每頁(yè)數(shù)據(jù)的起始索引
3、element-ui的分頁(yè)組件:
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
//1.size-change事件:每頁(yè)顯示的記錄數(shù)發(fā)生改變時(shí)觸發(fā),會(huì)自動(dòng)給事件處理函數(shù)傳遞一個(gè)參數(shù),參數(shù)值是新的每頁(yè)顯示的記錄數(shù)
//2.current-change事件:當(dāng)前的頁(yè)碼發(fā)生改變時(shí)觸發(fā),會(huì)自動(dòng)給事件處理函數(shù)傳遞一個(gè)參數(shù),參數(shù)值是新的頁(yè)碼
//3.current-page屬性:當(dāng)前頁(yè)的頁(yè)碼
//4.page-sizes屬性:每頁(yè)顯示的記錄數(shù)的列表,屬性值是一個(gè)數(shù)組
//5.page-size屬性:當(dāng)前每頁(yè)顯示的記錄數(shù),屬性值是一個(gè)數(shù)字
//6.layout屬性:分頁(yè)組件的布局
//7.total屬性:總記錄數(shù)總結(jié)
到此這篇關(guān)于element-ui圖像組件、上傳組件以及分頁(yè)組件實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)element-ui圖像組件、上傳組件、分頁(yè)組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探討如何在Vue中使用EventBus實(shí)現(xiàn)組件間的高效通信
在現(xiàn)代前端開發(fā)中,Vue.js?作為一種流行的漸進(jìn)式框架,廣泛應(yīng)用于各類?Web?項(xiàng)目的構(gòu)建中,本文將深入探討如何在?Vue?中使用?EventBus,實(shí)現(xiàn)組件間的高效通信,需要的可以了解下2024-11-11
在vue3項(xiàng)目中給頁(yè)面添加水印的實(shí)現(xiàn)方法
這篇文章主要給大家介紹一下在vue3項(xiàng)目中添加水印的實(shí)現(xiàn)方法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-08-08
Vue.js結(jié)合SortableJS實(shí)現(xiàn)樹形數(shù)據(jù)拖拽
本文主要介紹了Vue.js結(jié)合SortableJS實(shí)現(xiàn)樹形數(shù)據(jù)拖拽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
vue的index.html中獲取環(huán)境變量和業(yè)務(wù)判斷圖文詳解
這篇文章主要給大家介紹了關(guān)于vue的index.html中獲取環(huán)境變量和業(yè)務(wù)判斷的相關(guān)資料,對(duì)vue來(lái)說(shuō)index.html是一個(gè)總的入口文件,vue是單頁(yè)面應(yīng)用,掛在id為app的div下然后動(dòng)態(tài)渲染路由模板,需要的朋友可以參考下2023-09-09
vue3使用mitt.js實(shí)現(xiàn)各種組件間的通信
在vue工程中,除開vue自帶的什么父子間,祖孫間通信,還有一個(gè)非常方便的通信方式,類似Vue2.x?使用?EventBus?進(jìn)行組件通信,而?Vue3.x?推薦使用?mitt.js,可以實(shí)現(xiàn)各個(gè)組件間的通信,所以本文給大家介紹了vue3使用mitt.js實(shí)現(xiàn)組件通信,需要的朋友可以參考下2024-05-05
詳解vue2.0的Element UI的表格table列時(shí)間戳格式化
本篇文章主要介紹了詳解vue2.0的Element UI的表格table列時(shí)間戳格式化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-06-06

