使用VUX中的Popup-picker组件中遇到的问题记录

新换了业务线,有移动端和web端的开发内容,移动端使用的是vux移动端组件,在使用Popup-picker时遇到了一些问题,特此记录

1、设置联级选择

官网demo链接https://doc.vux.li/zh-CN/components/popup-picker.html

官网的联级选择是地区,完整的都有三级数据,我的数据比较特殊,第一级都有,第二级只有一个选项有,第三级也只有一个选项有

下面这是官网demo的数据,可以正常显示三级联动

[{
        name: '中国',
        value: 'china',
        parent: 0
      }, {
        name: '美国',
        value: 'USA',
        parent: 0
      }, {
        name: '广东',
        value: 'china001',
        parent: 'china'
      }, {
        name: '广西',
        value: 'china002',
        parent: 'china'
      }, {
        name: '美国001',
        value: 'usa001',
        parent: 'USA'
      }, {
        name: '美国002',
        value: 'usa002',
        parent: 'USA'
      }, {
        name: '广州',
        value: 'gz',
        parent: 'china001'
      }, {
        name: '深圳',
        value: 'sz',
        parent: 'china001'
      }, {
        name: '广西001',
        value: 'gx001',
        parent: 'china002'
      }, {
        name: '广西002',
        value: 'gx002',
        parent: 'china002'
      }, {
        name: '美国001_001',
        value: '0003',
        parent: 'usa001'
      }, {
        name: '美国001_002',
        value: '0004',
        parent: 'usa001'
      }, {
        name: '美国002_001',
        value: '0005',
        parent: 'usa002'
      }, {
        name: '美国002_002',
        value: '0006',
        parent: 'usa002'
      }]

我的数据是,不能提供真实数据,所以修改了一下,即第一级只有一个有第二级,第二级只有一个有后几级,然后级联选择只显示了第一级

[
    {
        name: '中国',
        value: '1',
        parent: 0
      }, {
        name: '美国',
        value: '2',
        parent: 0
      }, 
      {
        name: '法国',
        value: '3',
        parent: 0
      }, {
        name: '英国',
        value: '4',
        parent: 0
      }, 
      {
        name: '伦敦1',
        value: '5',
        parent: '4'
      }, {
        name: '伦敦2',
        value: '6',
        parent: '4'
      }, {
        name: '伦敦3',
        value: '7',
        parent: '4'
      },
      {
        name: '测试菜单1',
        value: '8',
        parent: '7'
      },
      {
        name: '测试菜单2',
        value: '8',
        parent: '7'
      }
]

为了解决这个问题,找了个懒办法,没有去参与组件的下载和修复,我把数据拼接成了完整的,给缺少第二级和第三级的数据都补充了显示name为空的下级菜单,就显示出来了。

如下图

[
    {
        name: '中国',
        value: '1',
        parent: 0
      }, 
    {
        name: '',
        value: '1.1',
        parent: '1'
      }, 
        {
        name: '',
        value: '1.2',
        parent: '1.1'
      },{
        name: '美国',
        value: '2',
        parent: 0
      }, {
        name: '',
        value: '2.1',
        parent: '2'
      }, 
        {
        name: '',
        value: '2.2',
        parent: '2.1'
      },
      {
        name: '法国',
        value: '3',
        parent: 0
      }, 
       {
        name: '',
        value: '3.1',
        parent: '3'
      }, 
        {
        name: '',
        value: '3.2',
        parent: '3.1'
      },
    {
        name: '英国',
        value: '4',
        parent: 0
      }, 
      {
        name: '伦敦1',
        value: '5',
        parent: '4'
      }, {
        name: '伦敦2',
        value: '6',
        parent: '4'
      }, {
        name: '伦敦3',
        value: '7',
        parent: '4'
      },
      {
        name: '测试菜单1',
        value: '8',
        parent: '7'
      },
      {
        name: '测试菜单2',
        value: '8',
        parent: '7'
      }
]

ps: 我在第一补充时,只补充完整了第二级菜单,没有补充缺少的第三级,虽然三级级联菜单也可以显示出来,不过在给其赋值之后里面的内容在第二级和第三级上无法定位到所选项的位置,即不能正常回显联级选项,所以又给没有第三级菜单的补充了缺少的第三级,顺利回显,当然我这是个为了使用组件赶时间的笨办法,有精力和时间的小伙伴可以把源码下载下来然后自己修复一下这个问题

2、自动触发PopupPicker的点击事件

我用的是vue哈,给组件引用的地方加上ref="xxxx",然后再vue代码中使用this.$refs.xxx.onClick();即可自动弹出啦

自己总结记录下~

vux 省市县数据 内容描述: export const address=[{ name: "北京市", parent: "0", value: "110000" }, { name: "北京市", parent: "110000", parentAreaName: "北京市", value: "110100" }, { name: "东城区", parent: "110100", parentAreaName: "北京市", value: "110101" }, { name: "西城区", parent: "110100", parentAreaName: "北京市", value: "110102" }, { name: "朝阳区", parent: "110100", parentAreaName: "北京市", value: "110105" }, { name: "丰台区", parent: "110100", parentAreaName: "北京市", value: "110106" }, { name: "石景山区", parent: "110100", parentAreaName: "北京市", value: "110107" }, { name: "海淀区", parent: "110100", parentAreaName: "北京市", value: "110108" }, { name: "门头沟区", parent: "110100", parentAreaName: "北京市", value: "110109" }, { name: "房山区", parent: "110100", parentAreaName: "北京市", value: "110111" }, { name: "通州区", parent: "110100", parentAreaName: "北京市", value: "110112" }, { name: "顺义区", parent: "110100", parentAreaName: "北京市", value: "110113" }, { name: "昌平区", parent: "110100", parentAreaName: "北京市", value: "110114" }, { name: "大兴区", parent: "110100", parentAreaName: "北京市", value: "110115" }, { name: "怀柔区", parent: "110100", parentAreaName: "北京市", value: "110116" }, { name: "平谷区", parent: "110100", parentAreaName: "北京市", value: "110117" }, { name: "密云区", parent: "110100", parentAreaName: "北京市", value: "110118" }, { name: "延庆区", parent: "110100", parentAreaName: "北京市", value: "110119" }]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值