diff --git a/packages/table/src/table-body.js b/packages/table/src/table-body.js index c36ad8991..9976b8810 100644 --- a/packages/table/src/table-body.js +++ b/packages/table/src/table-body.js @@ -35,7 +35,7 @@ export default { prev.push(item); const rowKey = this.store.table.getRowKey(item); const parent = this.store.states.treeData[rowKey]; - if (parent && parent.children) { + if (parent && parent.children && parent.hasChildren) { const tmp = []; const traverse = (children) => { if (!children) return; diff --git a/test/unit/specs/table.spec.js b/test/unit/specs/table.spec.js index 54a490188..42256fa90 100644 --- a/test/unit/specs/table.spec.js +++ b/test/unit/specs/table.spec.js @@ -1,4 +1,4 @@ -import { createVue, triggerEvent, destroyVM } from '../util'; +import { createVue, triggerEvent, destroyVM, waitImmediate } from '../util'; const DELAY = 10; const testDataArr = []; @@ -1956,7 +1956,7 @@ describe('Table', () => { }, DELAY); }); - it('load substree row data', (done) => { + it('load substree row data', async() => { const vm = createVue({ template: ` @@ -1968,6 +1968,11 @@ describe('Table', () => { `, data() { const testData = getTestData(); + testData[testData.length - 1].children = [ + { + name: 'A Bug\'s Life copy 1', release: '2008-1-25-1', director: 'John Lasseter', runtime: 95 + } + ]; testData[1].hasChildren = true; return { testData: testData @@ -1986,14 +1991,15 @@ describe('Table', () => { } } }, true); - setTimeout(() => { - const expandIcon = vm.$el.querySelector('.el-table__expand-icon'); - expandIcon.click(); - setTimeout(() => { - expect(expandIcon.classList.contains('el-table__expand-icon--expanded')).to.be.true; - expect(vm.$el.querySelectorAll('.el-table__row').length).to.equal(7); - done(); - }, DELAY); - }, DELAY); + + await waitImmediate(); + + const expandIcon = vm.$el.querySelector('.el-table__expand-icon'); + expandIcon.click(); + + await waitImmediate(); + + expect(expandIcon.classList.contains('el-table__expand-icon--expanded')).to.be.true; + expect(vm.$el.querySelectorAll('.el-table__row').length).to.equal(8); }); });