例子:查看element-ui所打包的js文件修改源码,随意打印测试查看控制台是否修改成功
例如:el-cascader-panel 源码压缩位置 node_modules\element-ui\lib\element-ui.common.js
通过debugger查看执行过程
el-cascader-panel 如何初始化
// 如何刷新:通过v-if控制刷新数据
默认通过v-model绑定初始值会报错
解决方案
<el-cascader-panel
ref="cascaderPanel"
v-model="bindVal"
:props="props"
></el-cascader-panel>
// 监听节点初始化
watch: {
ifInitNodeLoading(val) {
if (val) {
// console.log("一级初始化已完成");
this.$nextTick(() => {
this.initNode();
});
}
},
ifSedInitNodeLoading(val) {
if (val) {
// console.log("二级初始化已完成");
this.bindNodeInit();
// 初始化完成
this.rootInit = false;
// 在开始渲染你的其他接口数据
this.init();
}
},
},
// methods
// 手动初始化第二节点
initNode() {
const getComponentArr =
this.$refs.cascaderPanel.$children[0].$children[0].$children;
for (let index = 0; index < getComponentArr.length; index++) {
if (
getComponentArr[index].$el.className === "el-cascader-node"
) {
// 等同于触发@expand-change 方法
getComponentArr[index].handleExpand();
return;
} else {
// 第一节点无数据
}
}
},
// 绑定节点值
bindNodeInit() {
const menus = this.$refs.cascaderPanel.menus;
let initObj = menus[1][0];
this.bindVal= [initObj.parent.value, initObj.value];
this.ifSedInitNodeLoading = false;
// 测试获取选中节点
// this.$nextTick(() => {
// console.log(this.$refs.cascaderPanel.getCheckedNodes()[0].pathLabels);
// });
},
// 懒加载
getLoad(node, resolve) {
const { root, level, value } = node;
if (root) {
this.rootInit = root; // 判断初始化
}
let list = [];
let key = level === 0 ? '初始化请求参数' : value;
// 你的接口请求
api(key).then((ele) => {
ele.data.map((item) => {
list.push({
label: item.name,
value: item.id,
leaf: level >= 1,
});
});
if (this.rootInit) {
// 一级初始化完成
this.ifInitNodeLoading = level === 0;
// 二级初始化完成
this.ifSedInitNodeLoading = level === 1;
}
resolve(list);
});
},
如有更好的解决方法,请告知我学习学习。