elementui 级联选择器(处理后台返回的数据格式)

 <el-cascader

          v-model="value"

          :options="options"

          @change="handleChange">

          </el-cascader>

难点:作为一名前端新人,主要是做数据处理
当后台给的数据与示例的数据格式不一致时,需要作出数据处理(使用数组的map方法)
例如:后台返回的数据是这样的,那么我们怎么把他们变成elementui上的格式内容呢

options:[
  {
    "id": 3,
    "name": "美的电饭煲",
    "code": "C",
    "ammeterDeviceStateList": [
      {
        "id": 247,
        "deviceId": 3,
        "power": "820",
        "state": "快速饭"
      },
      {
        "id": 252,
        "deviceId": 3,
        "power": "30",
        "state": "杂粮粥"
      }]
  },
  {
    "id": 6,
    "name": "尚为台灯",
    "code": "F",
    "ammeterDeviceStateList": [
      {
        "id": 190,
        "deviceId": 6,
        "power": "8",
        "state": "三档"
      },
      {
        "id": 191,
        "deviceId": 6,
        "power": "4",
        "state": "二档"
      },
      {
        "id": 192,
        "deviceId": 6,
        "power": "1",
        "state": "一档"
      }
    ]
  }]

这里就需要用到map方法了,让我们来复习一下map方法的定义

*map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

*map() 方法按照原始数组元素顺序依次处理元素。

*注意: map() 不会对空数组进行检测。

*注意: map() 不会改变原始数组。

下面我们来做数据处理,这里的res.data为后台返回的原始数组,this.options为原始数组处理后的值,ammeterDeviceStateList.map为子菜单的原始数组,children为子菜单原始数组处理后的值。

 queryAmmeterType().then((res) => {
 this.options = res.data.map(({ name, id, ammeterDeviceStateList }) => ({
        value: id,
        label: name,
        children: ammeterDeviceStateList.map(({ state, id }) => ({
          value: id,
          label: state,
        })),
      }));

}

这样,就可以得到我们想要的,和elementui上一样的数据格式啦!!!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
2019全国省市级联json格式 省 市 区 街道 四级 [{"code":"110000","superCode":"000000","cityName":"北京","shortName":"北京"}, {"code":"120000","superCode":"000000","cityName":"天津","shortName":"天津"}, {"code":"130000","superCode":"000000","cityName":"河北省","shortName":"河北"}, {"code":"140000","superCode":"000000","cityName":"山西省","shortName":"山西"}, {"code":"150000","superCode":"000000","cityName":"内蒙古自治区","shortName":"内蒙古"}, {"code":"210000","superCode":"000000","cityName":"辽宁省","shortName":"辽宁"}, {"code":"220000","superCode":"000000","cityName":"吉林省","shortName":"吉林"}, {"code":"230000","superCode":"000000","cityName":"黑龙江省","shortName":"黑龙江"}, {"code":"310000","superCode":"000000","cityName":"上海","shortName":"上海"}, {"code":"320000","superCode":"000000","cityName":"江苏省","shortName":"江苏"}, {"code":"330000","superCode":"000000","cityName":"浙江省","shortName":"浙江"}, {"code":"340000","superCode":"000000","cityName":"安徽省","shortName":"安徽"}, {"code":"350000","superCode":"000000","cityName":"福建省","shortName":"福建"}, {"code":"360000","superCode":"000000","cityName":"江西省","shortName":"江西"}, {"code":"370000","superCode":"000000","cityName":"山东省","shortName":"山东"}, {"code":"410000","superCode":"000000","cityName":"河南省","shortName":"河南"}, {"code":"420000","superCode":"000000","cityName":"湖北省","shortName":"湖北"}, {"code":"430000","superCode":"000000","cityName":"湖南省","shortName":"湖南"}, {"code":"440000","superCode":"000000","cityName":"广东省","shortName":"广东"}, {"code":"450000","superCode":"000000","cityName":"广西壮族自治区","shortName":"广西"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值