繁体   English   中英

在elementUI Cascader中未正确显示

[英]Not displayed correctly in elementUI Cascader

我使用elementUI的级联选择器显示数据,我根据官方文档编写了此代码。

  <el-cascader
    v-model="address"
    :options="addressOptions"
    :props="{expandTrigger: 'hover'}"
  ></el-cascader>

  data() {
    return {
      address: '',
      addressOptions: [
        {
          value: 'Beijing',
          label: 'Beijing',
          children: this.getOptions("Beijing")
        },
        {
          value: 'Shanghai',
          label: 'Shanghai',
          children: this.getOptions("Shanghai")
        }
      ]
    }
  },
  methods: {
    getOptions(val) {
      let res = [];
      for(let i=1; i<=5; i++) {
        let floor = Object.create(null);
        floor.value = i;
        floor.label = i;
        floor.children = [];
        for(let j=1; j<=5; j++) {
          let obj = Object.create(null);
          obj.value = j < 10 ? `0${j}` : `${j}`;
          obj.label = j < 10 ? `0${j}` : `${j}`;
          floor.children.push(obj);
        }
        res.push(floor);
      }
      return res;
    }
  }

看来是正确的,但是当我选择该选项时,其第一级和第二级数据不变。 如下所示。

在此处输入图片说明

我已经思考了很长时间,但仍然找不到原因。 更令我惊讶的是,如果我的第三级数据与以前的参数结合在一起,结果将正常显示。

  // Can be displayed normally
  // obj.value = j < 10 ? `0${j}${val}` : `${j}${val}`;
  // obj.label = j < 10 ? `0${j}${val}` : `${j}${val}`;

  // This cannot be displayed normally.
  obj.value = j < 10 ? `0${j}` : `${j}`;
  obj.label = j < 10 ? `0${j}` : `${j}`;

在此处输入图片说明

你知道原因吗? 请帮我解决您的问题。 谢谢!

您可以在这里进行测试: https//jsfiddle.net/DangoSky/7osfp265/1/

我想我知道问题出在哪里,当您单击具有以下层次结构的选项>上海> 3> 03时,库将自上而下搜索03的值所在的位置。 03所在的第一个层次结构是Beijing> 1>03。因此它显示了错误的标签。 这似乎是库的问题(或者这是它们的设计方式),因为当您使用handleChange方法并执行console.log时,它将正确打印该值。

要解决此问题,您可以拥有所需的标签,但该值对于所有选项而言都必须是唯一的。 像“ Shanghai + 3 + 03”之类的东西可以作为值,以便您可以拆分和恢复原始值。

查看工作提琴https://jsfiddle.net/n365ecuk/

   getOptions(val) {
     let res = [];
  for(let i=1; i<=5; i++) {
    let floor = Object.create(null);
    floor.value = val + '+' + i;
    floor.label = i;
    floor.children = [];
    for(let j=1; j<=5; j++) {
      let obj = Object.create(null);
      // Can be displayed normally
      // obj.value = j < 10 ? `0${j}${val}` : `${j}${val}`;
      // obj.label = j < 10 ? `0${j}${val}` : `${j}${val}`;
      // This cannot be displayed normally.
      obj.value = val + '+' + i + '+' + j;
      obj.label = j < 10 ? `0${j}` : `${j}`;
      floor.children.push(obj);
    }
    res.push(floor);
 }
 return res;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM