您好,登錄后才能下訂單哦!
今天小編給大家分享一下Vue+ElementUI如何封裝簡(jiǎn)易PaginationSelect組件的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
在實(shí)際開(kāi)發(fā)工作中,經(jīng)常會(huì)碰到當(dāng)select下拉數(shù)據(jù)過(guò)需要做分頁(yè)的情況
這里簡(jiǎn)單介紹封裝的一個(gè)Pagination-Select組件幾個(gè)步驟
封裝的比較簡(jiǎn)易,可以根據(jù)自己的項(xiàng)目進(jìn)行改動(dòng)
/components/Pagination-Select/index.vue
<template> <div id="PaginationSelect"> <el-select v-model="value" :placeholder="selectOptions.placeholder" :filterable="selectOptions.filterable" :size="selectOptions.size" :collapse-tags="selectOptions.collapseTags" :multiple="selectOptions.multiple" :clearable="selectOptions.clearable" @change="selectChange"> <el-option v-for="item in (selectOptions.selectData).slice((selectPage.currentPage - 1) * selectPage.pageSize, selectPage.currentPage * selectPage.pageSize)" :key="item.value" :label="item.label" :value="item.value"> </el-option> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="selectPage.currentPage" layout="prev, pager, next" :page-size="selectPage.pageSize" :total="selectOptions.selectData.length"> </el-pagination> </el-select> </div> </template> <script> export default { name: 'PaginationSelect', props: { selectOptions: { type: Object, default: () => {} } }, data () { return { selectPage: { currentPage: 1, pageSize: 3 }, value: '' } }, methods: { selectChange (val) { this.$emit('getSelectVal', val) }, handleSizeChange (val) { this.selectPage.pageSize = val }, handleCurrentChange (val) { this.selectPage.currentPage = val } } } </script> <style lang="less"> .el-pagination { display: flex; justify-content: center; } </style>
demo項(xiàng)目,這邊直接放在App.vue中使用
<template> <div id="app"> <Pagination-Select :selectOptions="selectOptions" @getSelectVal="getSelectVal" /> </div> </template> <script> import PaginationSelect from './components/Pagination-Select' export default { name: 'App', components: { PaginationSelect }, data () { return { // select組件配置項(xiàng) selectOptions: { filterable: true, clearable: true, placeholder: '請(qǐng)選擇aaa', size: 'small', multiple: false, collapseTags: false, selectData: [] } } }, created () { this.querySelectData() }, methods: { querySelectData () { setTimeout(() => { this.selectOptions.selectData = [ { value: '1', label: '黃金糕' }, { value: '2', label: '雙皮奶' }, { value: '3', label: '蚵仔煎' }, { value: '4', label: '龍須面' }, { value: '5', label: '北京烤鴨' } ] }, 2000) }, getSelectVal (val) { console.log(val, 'val') } } } </script> <style lang="less"> #app { display: flex; justify-content: center; } </style>
根據(jù)selectOptions配置項(xiàng)修改組件屬性,父組件請(qǐng)求數(shù)據(jù)傳入子組件進(jìn)行渲染,當(dāng)子組件出發(fā)change方法時(shí)
使用emit將所選的值回傳父組件,進(jìn)行后續(xù)代碼邏輯
以上就是“Vue+ElementUI如何封裝簡(jiǎn)易PaginationSelect組件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。