我使用元素‘s的级联选择器来显示数据,我根据正式文档编写了这段代码。
<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/
发布于 2019-06-14 09:35:51
我想我知道问题是什么,当你点击上海>3> 03等级的选项时,图书馆会搜索03值所在的自上而下的位置。03所处的第一个等级是北京>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;
}https://stackoverflow.com/questions/56594223
复制相似问题