首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在elementUI Cascader中未正确显示

在elementUI Cascader中未正确显示
EN

Stack Overflow用户
提问于 2019-06-14 08:20:47
回答 1查看 1.1K关注 0票数 0

我使用元素‘s的级联选择器来显示数据,我根据正式文档编写了这段代码。

代码语言:javascript
复制
  <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;
    }
  }

这似乎是正确的,但当我选择该选项时,它的第一级和第二级数据不变。如下所示。

我想了很久,还是找不出原因。更令我惊讶的是,如果我的第三级数据与前面的参数拼接,结果将正常显示。

代码语言:javascript
复制
  // 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/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 09:35:51

我想我知道问题是什么,当你点击上海>3> 03等级的选项时,图书馆会搜索03值所在的自上而下的位置。03所处的第一个等级是北京>1> 03。因此它显示了错误的标签。这似乎是库的一个问题(或者他们是这样设计的),因为当您使用handleChange方法并执行console.log时,它会正确地打印值。

为了解决这个问题,您可以拥有您想要的标签,但是值必须是所有选项的唯一。类似于'Shanghai+3+03‘的东西可以是值,这样您就可以拆分和恢复原始值。

检查一下工作小提琴https://jsfiddle.net/n365ecuk/

代码语言:javascript
复制
   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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56594223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档