From 6ae9f0838f51e71d6733b53eab9b040780b8d9cc Mon Sep 17 00:00:00 2001 From: Jeff Wen Date: Mon, 22 Apr 2019 17:38:08 +0800 Subject: [PATCH] Tree: delete current node after it removed (#14604) --- packages/tree/src/model/tree-store.js | 4 ++++ test/unit/specs/tree.spec.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/packages/tree/src/model/tree-store.js b/packages/tree/src/model/tree-store.js index 0bdf2528c..a986c7b4c 100644 --- a/packages/tree/src/model/tree-store.js +++ b/packages/tree/src/model/tree-store.js @@ -91,7 +91,11 @@ export default class TreeStore { remove(data) { const node = this.getNode(data); + if (node && node.parent) { + if (node === this.currentNode) { + this.currentNode = null; + } node.parent.removeChild(node); } } diff --git a/test/unit/specs/tree.spec.js b/test/unit/specs/tree.spec.js index b92038fd2..7642fa5b7 100644 --- a/test/unit/specs/tree.spec.js +++ b/test/unit/specs/tree.spec.js @@ -494,10 +494,13 @@ describe('Tree', () => { it('remove', (done) => { vm = getTreeVm(':props="defaultProps" node-key="id"'); const tree = vm.$children[0]; + tree.setCurrentKey(1); + expect(tree.getCurrentNode().id).to.equal(1); tree.remove(1); vm.$nextTick(() => { expect(vm.data[0].id).to.equal(2); expect(tree.getNode(1)).to.equal(null); + expect(tree.getCurrentNode()).to.equal(null); done(); }); });