2种情况:
情况1:返回数据是1次性的。
情况2:返回数据是懒加载的。
html:
配置数据:
情况1:
- 通过options配置数据
- 通过props 配置 数据相关字段,否则不能显示。 element-ui对应字段value,label,children.关键3个字段
- 获取数据,给options赋值。(这时候已经可以使用,但是有个小BUG 最后1个菜单会显示空,这是因为后台返回数据中children是空数组,我们只需要通过 递归 将数据中children为空的数据赋值为undefined即可)
在获取数据时使用:
这样就解决了。
情况2:懒加载。
- 在props中设置 lazy:true,lazyload()函数(此函数是关键)
- 官方给出的例子: element.eleme.cn/#/zh-CN/com…
//基本上lazyload函数这样写,具体根据后台返回数据处理。
//有可能最后1级的data为空,或者其他会报 forEach is not a function。
//根据具体数据调整。 设置 数据的 leaf 属性为true,就不会继续渲染。
lazyLoad(node, resolve) {
const { level } = node;
getCity().then((res) => {
let data = res.data;
if (level == 1) {
//第一级菜单点击后做一些事情,比如每次返回数据的value,label对
//不上,在这可以改变
} else if (level == 2) {
//第二级菜单点击后
data.forEach((item) => {
item.leaf = levle >= 2;
});
}
resolve(nodes); //返回数据 共3级菜单。如果还有就继续 level 增加判断。
});
}
写在最后:
- 记录下这次的踩坑,懒加载因为免费api使用次数上线,没有调整完美。
- 但是,1次性返回数据的情况,即 情况1 已经解决。