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);
}
}