Commit cec324522580b31925091ccca37e2786068137de

Authored by Lawrence Lee
2 parents 6ef8d853 297f74ea

merge

examples/components/tableExpand.vue 0 → 100755
  1 +<template>
  2 + <div>{{ name }}</div>
  3 +</template>
  4 +<script>
  5 + export default {
  6 + props: {
  7 + name: String
  8 + },
  9 + created () {
  10 + console.log(this.name + ': 被创建');
  11 + },
  12 + destroyed () {
  13 + console.log(this.name + ': 被销毁');
  14 + }
  15 + }
  16 +</script>
0 17 \ No newline at end of file
... ...
examples/routers/table.vue 0 → 100644
  1 +<template>
  2 + <Table border :columns="columns7" :data="data6" @on-expand="expand"></Table>
  3 +</template>
  4 +<script>
  5 + import TableExpand from '../components/tableExpand.vue';
  6 + import etable from '../components/table.vue';
  7 + export default {
  8 + components: { etable },
  9 + data () {
  10 + return {
  11 + columns7: [
  12 + {
  13 + type: 'expand',
  14 + width: 50,
  15 + render: (h, params) => {
  16 +// return h(etable);
  17 +// return h('div', params.row.name)
  18 + return h(TableExpand, { props: { name: params.row.name } })
  19 + }
  20 + },
  21 + {
  22 + title: '姓名',
  23 + key: 'name',
  24 + render: (h, params) => {
  25 + return h('div', [
  26 + h('Icon', {
  27 + props: {
  28 + type: 'person'
  29 + }
  30 + }),
  31 + h('strong', params.row.name)
  32 + ]);
  33 + }
  34 + },
  35 + {
  36 + title: '年龄',
  37 + key: 'age',
  38 + sortable: true
  39 + },
  40 + {
  41 + title: '地址',
  42 + key: 'address'
  43 + },
  44 + {
  45 + title: '操作',
  46 + key: 'action',
  47 + width: 150,
  48 + align: 'center',
  49 + render: (h, params) => {
  50 + return h('div', [
  51 + h('Button', {
  52 + props: {
  53 + type: 'primary',
  54 + size: 'small'
  55 + },
  56 + style: {
  57 + marginRight: '5px'
  58 + },
  59 + on: {
  60 + click: () => {
  61 + this.show(params.index)
  62 + }
  63 + }
  64 + }, '查看'),
  65 + h('Button', {
  66 + props: {
  67 + type: 'error',
  68 + size: 'small'
  69 + },
  70 + on: {
  71 + click: () => {
  72 + this.remove(params.index)
  73 + }
  74 + }
  75 + }, '删除')
  76 + ]);
  77 + }
  78 + }
  79 + ],
  80 + data6: [
  81 + {
  82 + name: '王小明',
  83 + age: 18,
  84 + address: '北京市朝阳区芍药居'
  85 + },
  86 + {
  87 + name: '张小刚',
  88 + age: 25,
  89 + address: '北京市海淀区西二旗',
  90 + _disableExpand: true
  91 + },
  92 + {
  93 + name: '李小红',
  94 + age: 30,
  95 + address: '上海市浦东新区世纪大道',
  96 + _expanded: true
  97 + },
  98 + {
  99 + name: '周小伟',
  100 + age: 26,
  101 + address: '深圳市南山区深南大道'
  102 + }
  103 + ]
  104 + }
  105 + },
  106 + methods: {
  107 + show (index) {
  108 + this.$Modal.info({
  109 + title: '用户信息',
  110 + content: `姓名:${this.data6[index].name}<br>年龄:${this.data6[index].age}<br>地址:${this.data6[index].address}`
  111 + })
  112 + },
  113 + remove (index) {
  114 + this.data6.splice(index, 1);
  115 + },
  116 + expand (row, s) {
  117 +// console.log(row);
  118 +// console.log(s);
  119 + }
  120 + }
  121 + }
  122 +</script>
... ...
src/components/table/expand.js 0 → 100644
  1 +
  2 +export default {
  3 + name: 'TableExpand',
  4 + functional: true,
  5 + props: {
  6 + row: Object,
  7 + render: Function,
  8 + index: Number,
  9 + },
  10 + render: (h, ctx) => {
  11 + return ctx.props.render(h, {row: ctx.props.row, index: ctx.props.index});
  12 + }
  13 +};
0 14 \ No newline at end of file
... ...
src/components/table/expand.vue deleted
1   -<template>
2   - <div ref="cell"></div>
3   -</template>
4   -<script>
5   - import Vue from 'vue';
6   - export default {
7   - name: 'TableExpand',
8   - props: {
9   - row: Object,
10   - render: Function,
11   - index: Number,
12   - },
13   - methods: {
14   - compile () {
15   - if (this.render) {
16   - this.$el.innerHTML = '';
17   - const component = new Vue({
18   - functional: true,
19   - render: (h) => {
20   - return this.render(h, {
21   - row: this.row,
22   - index: this.index
23   - });
24   - }
25   - });
26   - const Cell = component.$mount();
27   - this.$refs.cell.appendChild(Cell.$el);
28   - }
29   - }
30   - },
31   - mounted () {
32   - this.$nextTick(() => {
33   - this.compile();
34   - });
35   - }
36   - };
37   -</script>
38 0 \ No newline at end of file
src/components/table/table-body.vue
... ... @@ -38,7 +38,7 @@
38 38 <script>
39 39 // todo :key="row"
40 40 import Cell from './cell.vue';
41   - import Expand from './expand.vue';
  41 + import Expand from './expand.js';
42 42 import Mixin from './mixin';
43 43  
44 44 export default {
... ...