diff --git a/src/components/table/table-body.vue b/src/components/table/table-body.vue index 7216a2ed..a8bc8c1f 100644 --- a/src/components/table/table-body.vue +++ b/src/components/table/table-body.vue @@ -45,13 +45,13 @@ `${this.prefixCls}-row`, this.rowClsName(_index), { - [`${this.prefixCls}-row-highlight`]: this.objData[_index]._isHighlight, - [`${this.prefixCls}-row-hover`]: this.objData[_index]._isHover + [`${this.prefixCls}-row-highlight`]: this.objData[_index] && this.objData[_index]._isHighlight, + [`${this.prefixCls}-row-hover`]: this.objData[_index] && this.objData[_index]._isHover } ] }, rowChecked (_index) { - return this.objData[_index]._isChecked; + return this.objData[_index] && this.objData[_index]._isChecked; }, setCellWidth (column, index) { return this.$parent.setCellWidth(column, index); diff --git a/src/components/table/table.vue b/src/components/table/table.vue index f056f952..59139619 100644 --- a/src/components/table/table.vue +++ b/src/components/table/table.vue @@ -338,7 +338,7 @@ const key = this.cloneColumns[index].key; if (this.cloneColumns[index].sortable !== 'custom') { // custom is for remote sort if (type === 'normal') { - this.rebuildData = this.makeData(); + this.rebuildData = this.makeDataWithFilter(); } else { this.rebuildData = this.sortData(this.rebuildData, type, index); } @@ -415,6 +415,16 @@ if (sortType !== 'normal') data = this.sortData(data, sortType, sortIndex); return data; }, + makeDataWithFilter () { + let data = this.makeData(); + this.cloneColumns.forEach(col => data = this.filterData(data, col)); + return data; + }, + makeDataWithSortAndFilter () { + let data = this.makeDataWithSort(); + this.cloneColumns.forEach(col => data = this.filterData(data, col)); + return data; + }, makeObjData () { let data = {}; this.data.forEach((row, index) => { @@ -473,7 +483,7 @@ data: { handler () { this.objData = this.makeObjData(); - this.rebuildData = this.makeData(); + this.rebuildData = this.makeDataWithSortAndFilter(); this.handleResize(); }, deep: true @@ -481,6 +491,7 @@ columns: { handler () { this.cloneColumns = this.makeColumns(); + this.rebuildData = this.makeDataWithSortAndFilter(); this.handleResize(); }, deep: true diff --git a/test/routers/table.vue b/test/routers/table.vue index aa363f34..26ed5c68 100644 --- a/test/routers/table.vue +++ b/test/routers/table.vue @@ -25,6 +25,7 @@
+ 显示子节点 @@ -219,6 +220,9 @@ }, sortChange (data) { console.log(data) + }, + showChildren () { + console.log(this.$children) } }, ready () { @@ -233,8 +237,8 @@ // address: '北京市东城区2', // edit: false // }); -// this.data.splice(0, 1) -// this.columns.splice(2,1) +// this.data.splice(0, 1); + this.columns.splice(2,1) }, 3000); } }