From 7e226e5ff75b9160ff96b38f6521e3e57b8f751a Mon Sep 17 00:00:00 2001 From: cl199793 Date: Fri, 5 Jul 2019 14:01:46 +0800 Subject: [PATCH 1/2] add feature --- .../cascader-panel/src/cascader-panel.vue | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/cascader-panel/src/cascader-panel.vue b/packages/cascader-panel/src/cascader-panel.vue index 3ac558f6a0..945a910778 100644 --- a/packages/cascader-panel/src/cascader-panel.vue +++ b/packages/cascader-panel/src/cascader-panel.vue @@ -79,6 +79,8 @@ const checkNode = el => { } }; +let loadCount = 0; + export default { name: 'ElCascaderPanel', @@ -294,6 +296,24 @@ export default { dataList && dataList.length && this.store.appendNodes(dataList, parent); node.loading = false; node.loaded = true; + + // dispose default value on lazy load mode + if (this.checkedValue && Array.isArray(this.checkedValue)) { + const nodeValue = this.checkedValue.slice(loadCount++).shift(); + const valueKey = this.config.value; + + if (Array.isArray(dataList) && dataList.filter(item => item[valueKey] === nodeValue).length > 0) { + const checkedNode = this.store.getNodeByValue(nodeValue); + this.lazyLoad(checkedNode, () => { + this.handleExpand(checkedNode); + }); + + if (loadCount === this.checkedValue.length) { + this.$parent.computePresentText(); + } + } + } + onFullfiled && onFullfiled(dataList); }; config.lazyLoad(node, resolve); From 231244f7531ce9e68a27f158a792ca9f6f4dc5ab Mon Sep 17 00:00:00 2001 From: cl199793 Date: Mon, 8 Jul 2019 19:49:31 +0800 Subject: [PATCH 2/2] fix review issue --- .../cascader-panel/src/cascader-panel.vue | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/cascader-panel/src/cascader-panel.vue b/packages/cascader-panel/src/cascader-panel.vue index 945a910778..ba5c1dccd5 100644 --- a/packages/cascader-panel/src/cascader-panel.vue +++ b/packages/cascader-panel/src/cascader-panel.vue @@ -79,8 +79,6 @@ const checkNode = el => { } }; -let loadCount = 0; - export default { name: 'ElCascaderPanel', @@ -111,7 +109,8 @@ export default { checkedNodePaths: [], store: [], menus: [], - activePath: [] + activePath: [], + loadCount: 0 }; }, @@ -298,17 +297,21 @@ export default { node.loaded = true; // dispose default value on lazy load mode - if (this.checkedValue && Array.isArray(this.checkedValue)) { - const nodeValue = this.checkedValue.slice(loadCount++).shift(); + if (Array.isArray(this.checkedValue)) { + const nodeValue = this.checkedValue[this.loadCount++]; const valueKey = this.config.value; + const leafKey = this.config.leaf; if (Array.isArray(dataList) && dataList.filter(item => item[valueKey] === nodeValue).length > 0) { const checkedNode = this.store.getNodeByValue(nodeValue); - this.lazyLoad(checkedNode, () => { - this.handleExpand(checkedNode); - }); - if (loadCount === this.checkedValue.length) { + if (!checkedNode.data[leafKey]) { + this.lazyLoad(checkedNode, () => { + this.handleExpand(checkedNode); + }); + } + + if (this.loadCount === this.checkedValue.length) { this.$parent.computePresentText(); } }