博客地址:https://ainyi.com/81html
基於 element ui 的==升級版穿梭框組件==發佈到 npm 啦vue
看過我以前博客的同窗或許知道我以前寫過關於 element 穿梭框組件重構的博客 關於 Element 組件的穿梭框的重構,當時還有一些同窗直接經過微信詢問不少關於這個組件的問題git
去年在上家公司就重構過的穿梭框,一直懶得封裝成一個 Vue 組件發佈到 npm,如今趁着目前比較閒,就這幾天繼續完善和優化、迭代更新 + 封裝,終於發佈啦~github
基於 Element UI 的升級版穿梭框組件npm
kr-cascader
api
kr-paging
bash
kr-cascader 多級多選穿梭框微信
kr-paging 數據量龐大的分頁穿梭框babel
npm install krry-transfer --save
依賴 Element checkbox、button 組件和樣式優化
import Vue from 'vue' import krryTransfer from 'krry-transfer' Vue.use(krryTransfer) /* * or 按需引入 * import { krryCascader, krryPaging } from 'krry-transfer' * * Vue.use(krryCascader) * Vue.use(krryPaging) */
<template> <div> <kr-cascader :dataObj="dataObj" :selectedData="selectedData" ></kr-cascader> </div> </template> <script> export default { data() { return { dataObj: { province: { '101103': '廣東省', }, city: { '101103': [ { id: 101164181112, label: '深圳市' } ] }, county: { '101164181112': [ { id: 106105142126, label: '寶安區' } ] } }, selectedData: [ { id: '101101-101101101112', label: '北京市-通州區' } ] } } } </script>
<template> <div> <kr-paging :dataList="dataList" :selectedData="selectedData" :pageSize="100" ></kr-paging> </div> </template> <script> export default { data() { return { dataList: [ { id: 0, label: '這是第0條數據' }, { id: 1, label: '這是第1條數據' } ], selectedData: [ { id: 0, label: '這是第0條數據' } ] } } } </script>
Attributes
name | type | default | description |
---|---|---|---|
boxTitle | Array | ['省份', '城市', '區縣', '選中地域'] | 按順序指定每一個方框的 title |
boxOperation | Array | ['添加省份', '添加城市', '添加區縣', '刪除地域'] | 按順序指定每一個方框底部的操做文案 |
dataObj | Object | {} | kr-cascader 的數據源 |
selectedData | Array | [] | 已選數據集合 |
Events
name | params | description |
---|---|---|
onChange | String: value:已選數據集合 | 當已選數據變化時觸發的事件 |
Methods
name | params | description |
---|---|---|
getSelectedData | - | 獲取已選數據集合的鉤子 |
注:dataObj、selectedData 的數據格式以下
dataObj(kr-cascader 的數據源):
dataObj: { province: { '省id': 'xx省' }, city: { '省id': [ { id: '市id', label: 'xx市' } ] }, county: { '市id': [ { id: '區id', label: 'xx區' } ] } }
selectedData(已選數據集合):
selectedData: [ { id: '101111', label: '內蒙古自治區' }, { id: '101101-101101101112', label: '北京市-通州區' }, { id: '101103-101164001112-106197987125', label: '廣東省-惠州市-惠城區' } ]
Attributes
name | type | default | description |
---|---|---|---|
boxTitle | Array | ['待選區', '已選中'] | 按順序指定每一個方框的 title |
pageSize | Number | 160 | 分頁大小 |
dataList | Array | [] | kr-paging 的數據源 |
selectedData | Array | [] | 已選數據集合 |
Events
name | params | description |
---|---|---|
onChange | String: value:已選數據集合 | 當已選數據變化時觸發的事件 |
Methods
name | params | description |
---|---|---|
getSelectedData | - | 獲取已選數據集合的鉤子 |
npm:krry-transfer
Blog:Krryblog
GitHub:krry-transfer
有個小問題糾結了好久,在作按需加載模塊的時候,遇到==ES6 import 解構失敗==的問題,網上查了一下,才知道是 babel 對 export default 的處理,例如:
export default { host: 'localhost', port: 80 }
變成了
module.exports.default = { host: 'localhost', port: 80 }
參考文章:ES6 export default 和 import語句中的解構賦值
解決方法是使用 babel-plugin-add-module-exports 插件,在 .babelrc 配置:
{ "presets": [["env", { "modules": "commonjs" }]], "plugins": ["add-module-exports"] }
博客地址:https://ainyi.com/81