qiuyaofan/mobileSelector

这个数据调用url从数据里面获取到的,字段对应不上。在js文件里面怎么修改呢?

Closed this issue · 2 comments

[{
"areaname": "长沙市",
"hnAreaInfoList": [{
"id": 15,
"areaname": "岳麓区"
}, {
"id": 16,
"areaname": "芙蓉区"
}, {
"id": 17,
"areaname": "天心区"
}, {
"id": 18,
"areaname": "开福区"
}, {
"id": 19,
"areaname": "雨花区"
}, {
"id": 20,
"areaname": "望城区"
}, {
"id": 21,
"areaname": "长沙县"
}, {
"id": 22,
"areaname": "浏阳市"
}, {
"id": 23,
"areaname": "宁乡市"
}],
"id": 1
}, {
"areaname": "株洲市",
"hnAreaInfoList": [{
"id": 24,
"areaname": "天元区"
}, {
"id": 25,
"areaname": "荷塘区"
}, {
"id": 26
}, {
"id": 27,
"areaname": "石峰区"
}, {
"id": 28,
"areaname": "醴陵市"
}, {
"id": 29,
"areaname": "株洲县"
}, {
"id": 30,
"areaname": "炎陵县"
}, {
"id": 31,
"areaname": "茶陵县"
}, {
"id": 32,
"areaname": "攸县"
}],
"id": 2
}]

var json= [{
"areaname": "长沙市",
"hnAreaInfoList": [{
"id": 15,
"areaname": "岳麓区"
}, {
"id": 16,
"areaname": "芙蓉区"
}, {
"id": 17,
"areaname": "天心区"
}, {
"id": 18,
"areaname": "开福区"
}, {
"id": 19,
"areaname": "雨花区"
}, {
"id": 20,
"areaname": "望城区"
}, {
"id": 21,
"areaname": "长沙县"
}, {
"id": 22,
"areaname": "浏阳市"
}, {
"id": 23,
"areaname": "宁乡市"
}],
"id": 1
}, {
"areaname": "株洲市",
"hnAreaInfoList": [{
"id": 24,
"areaname": "天元区"
}, {
"id": 25,
"areaname": "荷塘区"
}, {
"id": 26,
"areaname": "lalal缺少了"
}, {
"id": 27,
"areaname": "石峰区"
}, {
"id": 28,
"areaname": "醴陵市"
}, {
"id": 29,
"areaname": "株洲县"
}, {
"id": 30,
"areaname": "炎陵县"
}, {
"id": 31,
"areaname": "茶陵县"
}, {
"id": 32,
"areaname": "攸县"
}],
"id": 2
}];

  for (var i = 0; i < json.length; i++) {
    for (var j = 0; j < json[i].hnAreaInfoList.length; j++) {
      changeJsonKey(json[i].hnAreaInfoList[j]);
    }
    changeJsonKey(json[i],true);
  }
  //改变json的name,插件默认的是child和name
  function changeJsonKey(json,hasChild){
    json.name = json.areaname;
    delete json.areaname;
    json.value = json.id;
    delete json.id;
    if(hasChild){
      json.child = json.hnAreaInfoList;
      delete json.hnAreaInfoList;
    }
  }
  /**
   * 联动的picker
   */
  $('.select-value').mPicker({
    level: 2,
    dataJson: json,
    Linkage: true,
    rows: 6,
    idDefault: true,
    splitStr: '-',
    header: '<div class="mPicker-header">两级联动选择插件</div>',
    confirm: function () {
      //无value的情况
      console.info($('.select-value').data('value1') + '-' + $('.select-value').data('value2'));
    },
    cancel: function () {
      console.info($('.select-value').data('value1') + '-' + $('.select-value').data('value2'));
    }
  })

你可以先这样改,我找个时间加一下动态设置name值的

你好 我更新了版本 最新版可以动态改变name值,调用方法如下:

$('.select-value').mPicker({
        level: 2,
        dataJson: json,
        Linkage: true,
        rows: 6,
        idDefault: true,
        splitStr: '-',
        jsonName: 'areaname',
        jsonChild: 'hnAreaInfoList',
        jsonValue: 'id',
        header: '<div class="mPicker-header">两级联动选择插件</div>',
        confirm: function () {
          //无value的情况
          console.info($('.select-value').data('value1') + '-' + $('.select-value').data('value2'));
        },
        cancel: function () {
          console.info($('.select-value').data('value1') + '-' + $('.select-value').data('value2'));
        }
      })
     
    });

另外,你上面的json本身有一个缺少name的,格式不对,也会导致报错。请检查json完整性