注: 组件依赖父容器相对定位或者绝对定位,因为 Drawer 是绝对定位的。
- 默认配置使用
- import { provinceList, cityList, areaList } from '../../data/area'
- export default {
- data() {
- return {
- selectedIndex: [],
- data: [
- provinceList,
- [],
- []
- ]
- }
- },
- methods: {
- showDrawer() {
- this.- refs.drawer.show()
- },
- changeHandler(index, item, selectedVal, selectedIndex, selectedText) {
- // fake request
- setTimeout(() => {
- let data
- if (index === 0) {
- data = cityList[item.value]
- } else {
- // city change, get area data
- data = areaList[item.value]
- }
- // refill panel(index + 1) data
- this.- refs.drawer.refill(index + 1, data)
- }, 200)
- },
- selectHandler(selectedVal, selectedIndex, selectedText) {
- this.- createDialog({
- type: 'warn',
- content: `Selected Item:
- value: - {selectedVal.join(', ')}
- index: - {selectedIndex.join(', ')}
- text: - {selectedText.join(' ')}`, - icon: 'cubeic-alert'
- }).show()
- },
- cancelHandler() {
- console.log('cancel')
- }
- }
- }
你可以在 change 中通过 Drawer 的 fill 方法更新下一个 Panel 的数据,可以是同步更新也可以是异步更新。
- 自定义使用
- import { provinceList, cityList, areaList } from '../../data/area'
- export default {
- data() {
- return {
- province: {},
- selectedIndex: [],
- data: [
- [],
- ]
- }
- },
- methods: {
- showDrawer() {
- // get radom province
- const randomIndex = Math.round(Math.random() * provinceList.length)
- const randomProvince = provinceList[randomIndex]
- this.province = randomProvince
- this.- refs.drawer.refill(0, cityList[randomProvince.value])
- this.- refs.drawer.show()
- },
- changeHandler(index, item, selectedVal, selectedIndex, selectedText) {
- setTimeout(() => {
- // city change, get area data
- const data = areaList[item.value]
- this.- refs.drawer.refill(index + 1, data)
- }, 200)
- },
- selectHandler(selectedVal, selectedIndex, selectedText) {
- this.- createDialog({
- type: 'warn',
- content: `Selected Item:
- value: - {selectedVal.join(', ')}
- index: - {selectedIndex.join(', ')}
- text: - {selectedText.join(' ')}`,- icon: 'cubeic-alert'
- }).show()
- },
- cancelHandler() {
- console.log('cancel')
- }
- }
可以在 cube-drawer 组件中使用 cube-drawer-panel 以及 cube-drawer-item 组件来达到某些情况下的自定义目的。
CubeDrawer
- data 子配置项
是一个数组,数组中每一项仍然为数组,结构类似于:
里层数组的每一项可以是对象(包含 text 和 value),也可以是纯字符串。