Commit 3aca3d56ef5219f9edcf3ab653efaeb4b0afcf2b

Authored by 梁灏
1 parent 71ef4865

fixed #1372

Showing 2 changed files with 31 additions and 17 deletions   Show diff stats
examples/routers/table.vue
1 1 <template>
2   - <Table border :columns="columns4" :data="data1"></Table>
  2 + <div>
  3 + <Table highlight-row :columns="columns3" :data="data1" ref="table" @on-current-change="handleChange"></Table>
  4 + <Button @click="handleClear">clear</Button>
  5 + </div>
3 6 </template>
4 7 <script>
5 8 export default {
6 9 data () {
7 10 return {
8   - columns4: [
  11 + columns3: [
9 12 {
10   - type: 'selection',
  13 + type: 'index',
11 14 width: 60,
12 15 align: 'center'
13 16 },
... ... @@ -28,30 +31,33 @@
28 31 {
29 32 name: '王小明',
30 33 age: 18,
31   - address: '北京市朝阳区芍药居',
32   - _disabled: false,
33   - _checked: true
  34 + address: '北京市朝阳区芍药居'
34 35 },
35 36 {
36 37 name: '张小刚',
37 38 age: 25,
38   - address: '北京市海淀区西二旗',
39   - _disabled: true
  39 + address: '北京市海淀区西二旗'
40 40 },
41 41 {
42 42 name: '李小红',
43 43 age: 30,
44   - address: '上海市浦东新区世纪大道',
45   - _disabled: true
  44 + address: '上海市浦东新区世纪大道'
46 45 },
47 46 {
48 47 name: '周小伟',
49 48 age: 26,
50   - address: '深圳市南山区深南大道',
51   - _disabled: true
  49 + address: '深圳市南山区深南大道'
52 50 }
53 51 ]
54 52 }
  53 + },
  54 + methods: {
  55 + handleClear () {
  56 + this.$refs.table.clearCurrentRow();
  57 + },
  58 + handleChange (newData, oldData) {
  59 + console.log(newData, oldData)
  60 + }
55 61 }
56 62 }
57 63 </script>
... ...
src/components/table/table.vue
... ... @@ -374,9 +374,8 @@
374 374 if (this.disabledHover) return;
375 375 this.objData[_index]._isHover = false;
376 376 },
377   - highlightCurrentRow (_index) {
378   - if (!this.highlightRow || this.objData[_index]._isHighlight) return;
379   -
  377 + // 通用处理 highlightCurrentRow 和 clearCurrentRow
  378 + handleCurrentRow (type, _index) {
380 379 let oldIndex = -1;
381 380 for (let i in this.objData) {
382 381 if (this.objData[i]._isHighlight) {
... ... @@ -384,9 +383,18 @@
384 383 this.objData[i]._isHighlight = false;
385 384 }
386 385 }
387   - this.objData[_index]._isHighlight = true;
  386 + if (type === 'highlight') this.objData[_index]._isHighlight = true;
388 387 const oldData = oldIndex < 0 ? null : JSON.parse(JSON.stringify(this.cloneData[oldIndex]));
389   - this.$emit('on-current-change', JSON.parse(JSON.stringify(this.cloneData[_index])), oldData);
  388 + const newData = type === 'highlight' ? JSON.parse(JSON.stringify(this.cloneData[_index])) : null;
  389 + this.$emit('on-current-change', newData, oldData);
  390 + },
  391 + highlightCurrentRow (_index) {
  392 + if (!this.highlightRow || this.objData[_index]._isHighlight) return;
  393 + this.handleCurrentRow('highlight', _index);
  394 + },
  395 + clearCurrentRow () {
  396 + if (!this.highlightRow) return;
  397 + this.handleCurrentRow('clear');
390 398 },
391 399 clickCurrentRow (_index) {
392 400 this.highlightCurrentRow (_index);
... ...