gpt4 book ai didi

javascript - elementUI Cascader 中无法正确显示

转载 作者:行者123 更新时间:2023-12-01 00:55:47 24 4
gpt4 key购买 nike

我使用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;
}
}

看起来是正确的,但是当我选择该选项时,它的第一级和第二级数据没有改变。如下图。

enter image description here

我想了很久,还是没找到原因。更让我惊讶的是,如果我的三级数据与前面的参数拼接的话,结果会正常显示。

  // 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}`;

enter image description here

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

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

最佳答案

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

要解决此问题,您可以拥有所需的标签,但该值对于所有选项都必须是唯一的。像“上海+3+03”这样的东西可以是值,这样您就可以拆分并恢复原始值。

查看工作 fiddle 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;
}

关于javascript - elementUI Cascader 中无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com