Commit 97edb2eb3bc90d356a1540b1218b70e3dd7cb8f6
1 parent
9f853e3e
update Table
update Table
Showing
3 changed files
with
22 additions
and
7 deletions
Show diff stats
src/components/table/table-body.vue
| ... | ... | @@ -45,13 +45,13 @@ |
| 45 | 45 | `${this.prefixCls}-row`, |
| 46 | 46 | this.rowClsName(_index), |
| 47 | 47 | { |
| 48 | - [`${this.prefixCls}-row-highlight`]: this.objData[_index]._isHighlight, | |
| 49 | - [`${this.prefixCls}-row-hover`]: this.objData[_index]._isHover | |
| 48 | + [`${this.prefixCls}-row-highlight`]: this.objData[_index] && this.objData[_index]._isHighlight, | |
| 49 | + [`${this.prefixCls}-row-hover`]: this.objData[_index] && this.objData[_index]._isHover | |
| 50 | 50 | } |
| 51 | 51 | ] |
| 52 | 52 | }, |
| 53 | 53 | rowChecked (_index) { |
| 54 | - return this.objData[_index]._isChecked; | |
| 54 | + return this.objData[_index] && this.objData[_index]._isChecked; | |
| 55 | 55 | }, |
| 56 | 56 | setCellWidth (column, index) { |
| 57 | 57 | return this.$parent.setCellWidth(column, index); | ... | ... |
src/components/table/table.vue
| ... | ... | @@ -338,7 +338,7 @@ |
| 338 | 338 | const key = this.cloneColumns[index].key; |
| 339 | 339 | if (this.cloneColumns[index].sortable !== 'custom') { // custom is for remote sort |
| 340 | 340 | if (type === 'normal') { |
| 341 | - this.rebuildData = this.makeData(); | |
| 341 | + this.rebuildData = this.makeDataWithFilter(); | |
| 342 | 342 | } else { |
| 343 | 343 | this.rebuildData = this.sortData(this.rebuildData, type, index); |
| 344 | 344 | } |
| ... | ... | @@ -415,6 +415,16 @@ |
| 415 | 415 | if (sortType !== 'normal') data = this.sortData(data, sortType, sortIndex); |
| 416 | 416 | return data; |
| 417 | 417 | }, |
| 418 | + makeDataWithFilter () { | |
| 419 | + let data = this.makeData(); | |
| 420 | + this.cloneColumns.forEach(col => data = this.filterData(data, col)); | |
| 421 | + return data; | |
| 422 | + }, | |
| 423 | + makeDataWithSortAndFilter () { | |
| 424 | + let data = this.makeDataWithSort(); | |
| 425 | + this.cloneColumns.forEach(col => data = this.filterData(data, col)); | |
| 426 | + return data; | |
| 427 | + }, | |
| 418 | 428 | makeObjData () { |
| 419 | 429 | let data = {}; |
| 420 | 430 | this.data.forEach((row, index) => { |
| ... | ... | @@ -473,7 +483,7 @@ |
| 473 | 483 | data: { |
| 474 | 484 | handler () { |
| 475 | 485 | this.objData = this.makeObjData(); |
| 476 | - this.rebuildData = this.makeData(); | |
| 486 | + this.rebuildData = this.makeDataWithSortAndFilter(); | |
| 477 | 487 | this.handleResize(); |
| 478 | 488 | }, |
| 479 | 489 | deep: true |
| ... | ... | @@ -481,6 +491,7 @@ |
| 481 | 491 | columns: { |
| 482 | 492 | handler () { |
| 483 | 493 | this.cloneColumns = this.makeColumns(); |
| 494 | + this.rebuildData = this.makeDataWithSortAndFilter(); | |
| 484 | 495 | this.handleResize(); |
| 485 | 496 | }, |
| 486 | 497 | deep: true | ... | ... |
test/routers/table.vue
| ... | ... | @@ -25,6 +25,7 @@ |
| 25 | 25 | <!--<div slot="footer">表格标题</div>--> |
| 26 | 26 | </i-table> |
| 27 | 27 | <br> |
| 28 | + <i-button @click="showChildren">显示子节点</i-button> | |
| 28 | 29 | <!--<i-table size="small" border stripe :columns="columns" :data="data"></i-table>--> |
| 29 | 30 | </div> |
| 30 | 31 | </template> |
| ... | ... | @@ -219,6 +220,9 @@ |
| 219 | 220 | }, |
| 220 | 221 | sortChange (data) { |
| 221 | 222 | console.log(data) |
| 223 | + }, | |
| 224 | + showChildren () { | |
| 225 | + console.log(this.$children) | |
| 222 | 226 | } |
| 223 | 227 | }, |
| 224 | 228 | ready () { |
| ... | ... | @@ -233,8 +237,8 @@ |
| 233 | 237 | // address: '北京市东城区2', |
| 234 | 238 | // edit: false |
| 235 | 239 | // }); |
| 236 | -// this.data.splice(0, 1) | |
| 237 | -// this.columns.splice(2,1) | |
| 240 | +// this.data.splice(0, 1); | |
| 241 | + this.columns.splice(2,1) | |
| 238 | 242 | }, 3000); |
| 239 | 243 | } |
| 240 | 244 | } | ... | ... |