问题描述:
级联下拉框数据量过大,导致前端渲染迟顿,易导致页面崩溃或卡死解决方案:
采用级联动态加载的方式渲染(懒加载)
重点:lazyload方法内调用外部方法的this定义,要在data()方法里面,return方法外面。否则其他地方无法调用方法或发送请求。
当然也可以采取另一种方式,页面初始化的时候获取整个级联下拉数据定义给一个变量,初始化渲染的时候只渲染第一级下拉,lazyload方法调用时就不需要发送请求,直接node遍历那个变量的数据取出对应的第二级下拉框的数据渲染即可。
<script>
export default {
data() {
let me = this;
return {
userProp: {
value: 'deptId',
label: 'deptName',
multiple: true,
lazy: true,
lazyLoad (node, resolve) {
let url = "./svc/user/getUsers?deptId="+node.value;
me.$http.get(url).then(function (resp) {
resolve(resp.data.list);
});
}
}