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 \ No newline at end of file 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 \ No newline at end of file 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 \ No newline at end of file 0 \ No newline at end of file
src/components/table/table-body.vue
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 <script> 38 <script>
39 // todo :key="row" 39 // todo :key="row"
40 import Cell from './cell.vue'; 40 import Cell from './cell.vue';
41 - import Expand from './expand.vue'; 41 + import Expand from './expand.js';
42 import Mixin from './mixin'; 42 import Mixin from './mixin';
43 43
44 export default { 44 export default {