Commit 096f2bfe9ce1a9659282b2b1f994c89fea1a76a2
1 parent
afea484f
fixed #1357
Showing
3 changed files
with
25 additions
and
10 deletions
Show diff stats
examples/routers/table.vue
1 | +export default { | |
2 | + name: 'TableRenderHeader', | |
3 | + functional: true, | |
4 | + props: { | |
5 | + render: Function, | |
6 | + column: Object, | |
7 | + index: Number | |
8 | + }, | |
9 | + render: (h, ctx) => { | |
10 | + const params = { | |
11 | + column: ctx.props.column, | |
12 | + index: ctx.props.index | |
13 | + }; | |
14 | + return ctx.props.render(h, params); | |
15 | + } | |
16 | +}; | |
0 | 17 | \ No newline at end of file | ... | ... |
src/components/table/table-head.vue
... | ... | @@ -10,7 +10,8 @@ |
10 | 10 | <template v-if="column.type === 'expand'"></template> |
11 | 11 | <template v-else-if="column.type === 'selection'"><Checkbox :value="isSelectAll" @on-change="selectAll"></Checkbox></template> |
12 | 12 | <template v-else> |
13 | - <span v-html="renderHeader(column, index)"></span> | |
13 | + <span v-if="!column.renderHeader">{{ column.title || '#' }}</span> | |
14 | + <render-header v-else :render="column.renderHeader" :column="column" :index="index"></render-header> | |
14 | 15 | <span :class="[prefixCls + '-sort']" v-if="column.sortable"> |
15 | 16 | <i class="ivu-icon ivu-icon-arrow-up-b" :class="{on: column._sortType === 'asc'}" @click="handleSort(index, 'asc')"></i> |
16 | 17 | <i class="ivu-icon ivu-icon-arrow-down-b" :class="{on: column._sortType === 'desc'}" @click="handleSort(index, 'desc')"></i> |
... | ... | @@ -58,13 +59,14 @@ |
58 | 59 | import Checkbox from '../checkbox/checkbox.vue'; |
59 | 60 | import Poptip from '../poptip/poptip.vue'; |
60 | 61 | import iButton from '../button/button.vue'; |
62 | + import renderHeader from './header'; | |
61 | 63 | import Mixin from './mixin'; |
62 | 64 | import Locale from '../../mixins/locale'; |
63 | 65 | |
64 | 66 | export default { |
65 | 67 | name: 'TableHead', |
66 | 68 | mixins: [ Mixin, Locale ], |
67 | - components: { CheckboxGroup, Checkbox, Poptip, iButton }, | |
69 | + components: { CheckboxGroup, Checkbox, Poptip, iButton, renderHeader }, | |
68 | 70 | props: { |
69 | 71 | prefixCls: String, |
70 | 72 | styleObject: Object, |
... | ... | @@ -122,13 +124,6 @@ |
122 | 124 | } |
123 | 125 | ]; |
124 | 126 | }, |
125 | - renderHeader (column, $index) { | |
126 | - if ('renderHeader' in this.columns[$index]) { | |
127 | - return this.columns[$index].renderHeader(column, $index); | |
128 | - } else { | |
129 | - return column.title || '#'; | |
130 | - } | |
131 | - }, | |
132 | 127 | selectAll () { |
133 | 128 | const status = !this.isSelectAll; |
134 | 129 | this.$parent.selectAll(status); | ... | ... |