Commit 1b737fdc83027a0ae722e517446ac444fe7798b3

Authored by 梁灏
1 parent 096f2bfe

fixed #122

examples/routers/table.vue
@@ -21,15 +21,16 @@ @@ -21,15 +21,16 @@
21 title: '姓名', 21 title: '姓名',
22 key: 'name', 22 key: 'name',
23 width: 100, 23 width: 100,
24 - fixed: 'left',  
25 sortable: true, 24 sortable: true,
26 - renderHeader: (h, params) => {  
27 - return h('Tag', params.index)  
28 - } 25 +// fixed: 'left',
  26 +// renderHeader: (h, params) => {
  27 +// return h('Tag', params.index)
  28 +// }
29 }, 29 },
30 { 30 {
31 title: '年龄', 31 title: '年龄',
32 key: 'age', 32 key: 'age',
  33 + sortable: true,
33 width: 100 34 width: 100
34 }, 35 },
35 { 36 {
src/components/table/table-head.vue
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <template v-if="column.type === 'expand'"></template> 10 <template v-if="column.type === 'expand'"></template>
11 <template v-else-if="column.type === 'selection'"><Checkbox :value="isSelectAll" @on-change="selectAll"></Checkbox></template> 11 <template v-else-if="column.type === 'selection'"><Checkbox :value="isSelectAll" @on-change="selectAll"></Checkbox></template>
12 <template v-else> 12 <template v-else>
13 - <span v-if="!column.renderHeader">{{ column.title || '#' }}</span> 13 + <span v-if="!column.renderHeader" @click="handleSortByHead(index)">{{ column.title || '#' }}</span>
14 <render-header v-else :render="column.renderHeader" :column="column" :index="index"></render-header> 14 <render-header v-else :render="column.renderHeader" :column="column" :index="index"></render-header>
15 <span :class="[prefixCls + '-sort']" v-if="column.sortable"> 15 <span :class="[prefixCls + '-sort']" v-if="column.sortable">
16 <i class="ivu-icon ivu-icon-arrow-up-b" :class="{on: column._sortType === 'asc'}" @click="handleSort(index, 'asc')"></i> 16 <i class="ivu-icon ivu-icon-arrow-up-b" :class="{on: column._sortType === 'asc'}" @click="handleSort(index, 'asc')"></i>
@@ -134,6 +134,19 @@ @@ -134,6 +134,19 @@
134 } 134 }
135 this.$parent.handleSort(index, type); 135 this.$parent.handleSort(index, type);
136 }, 136 },
  137 + handleSortByHead (index) {
  138 + const column = this.columns[index];
  139 + if (column.sortable) {
  140 + const type = column._sortType;
  141 + if (type === 'normal') {
  142 + this.handleSort(index, 'asc');
  143 + } else if (type === 'asc') {
  144 + this.handleSort(index, 'desc');
  145 + } else {
  146 + this.handleSort(index, 'normal');
  147 + }
  148 + }
  149 + },
137 handleFilter (index) { 150 handleFilter (index) {
138 this.$parent.handleFilter(index); 151 this.$parent.handleFilter(index);
139 }, 152 },