Pārlūkot izejas kodu

Table: fix load bug in lazy mode (#15101)

hetech 6 gadi atpakaļ
vecāks
revīzija
c6dbd286e1
2 mainītis faili ar 18 papildinājumiem un 12 dzēšanām
  1. 1 1
      packages/table/src/table-body.js
  2. 17 11
      test/unit/specs/table.spec.js

+ 1 - 1
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;

+ 17 - 11
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: `
         <el-table :data="testData" row-key="release" lazy :load="load">
@@ -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);
   });
 });