Commit b64204fd2792d1716000aa281807fa0a72893653
1 parent
174836c4
update Tree demo
Showing
1 changed file
with
170 additions
and
66 deletions
Show diff stats
examples/routers/tree.vue
| 1 | +<!--<template>--> | |
| 2 | + <!--<div>--> | |
| 3 | + <!--<Tree :data="baseData" :load-data="loadData" multiple :render="renderFunc"></Tree>--> | |
| 4 | + <!--<Button @click="handleAdd">add</Button>--> | |
| 5 | + <!--<Button @click="handleUpdate">update</Button>--> | |
| 6 | + <!--</div>--> | |
| 7 | +<!--</template>--> | |
| 8 | +<!--<script>--> | |
| 9 | + <!--export default {--> | |
| 10 | + <!--data () {--> | |
| 11 | + <!--return {--> | |
| 12 | + <!--baseData: [--> | |
| 13 | + <!--{--> | |
| 14 | + <!--expand: true,--> | |
| 15 | + <!--title: 'parent 1',--> | |
| 16 | + <!--children: [--> | |
| 17 | + <!--{--> | |
| 18 | + <!--title: 'parent 1-0',--> | |
| 19 | + <!--expand: false,--> | |
| 20 | + <!--children: [],--> | |
| 21 | + <!--loading: false--> | |
| 22 | + <!--},--> | |
| 23 | + <!--{--> | |
| 24 | + <!--title: 'parent 1-1',--> | |
| 25 | + <!--expand: true,--> | |
| 26 | + <!--checked: true,--> | |
| 27 | + <!--children: [--> | |
| 28 | + <!--{--> | |
| 29 | + <!--title: 'leaf',--> | |
| 30 | + <!--render: (h, { node }) => {--> | |
| 31 | + <!--return h('Button', {--> | |
| 32 | + <!--props: {--> | |
| 33 | + <!--type: 'primary',--> | |
| 34 | + <!--size: 'small'--> | |
| 35 | + <!--},--> | |
| 36 | + <!--on: {--> | |
| 37 | + <!--click: ({target}) => {--> | |
| 38 | + <!--this.logger(target.textContent);--> | |
| 39 | + <!--}--> | |
| 40 | + <!--}--> | |
| 41 | + <!--}, node.title + '000');--> | |
| 42 | + <!--}--> | |
| 43 | + <!--}--> | |
| 44 | + <!--]--> | |
| 45 | + <!--}--> | |
| 46 | + <!--]--> | |
| 47 | + <!--}--> | |
| 48 | + <!--]--> | |
| 49 | + <!--};--> | |
| 50 | + <!--},--> | |
| 51 | + <!--methods: {--> | |
| 52 | + <!--handleAdd () {--> | |
| 53 | + <!--this.baseData.push(--> | |
| 54 | + <!--{--> | |
| 55 | + <!--title: 'test name',--> | |
| 56 | + <!--checked: true--> | |
| 57 | + <!--}--> | |
| 58 | + <!--);--> | |
| 59 | + <!--},--> | |
| 60 | + <!--handleUpdate () {--> | |
| 61 | + <!--const child = this.baseData[0].children[0].children[1];--> | |
| 62 | + <!--// console.log(JSON.stringify(this.baseData), '\n', JSON.stringify(child));--> | |
| 63 | + <!--if (!child) return this.$Message.error('Node is async and is not loaded yet');--> | |
| 64 | + <!--else this.$set(child, 'checked', true);--> | |
| 65 | + <!--},--> | |
| 66 | + <!--logger (txt) {--> | |
| 67 | + <!--console.log(txt);--> | |
| 68 | + <!--},--> | |
| 69 | + <!--loadData (item, callback) {--> | |
| 70 | + <!--setTimeout(() => {--> | |
| 71 | + <!--callback([--> | |
| 72 | + <!--{--> | |
| 73 | + <!--title: 'children-1',--> | |
| 74 | +<!--// loading: false,--> | |
| 75 | + <!--children: []--> | |
| 76 | + <!--},--> | |
| 77 | + <!--{--> | |
| 78 | + <!--title: 'children-2',--> | |
| 79 | +<!--// loading: false,--> | |
| 80 | + <!--children: []--> | |
| 81 | + <!--}--> | |
| 82 | + <!--]);--> | |
| 83 | + <!--}, 2000);--> | |
| 84 | + <!--},--> | |
| 85 | + <!--renderFunc (h, { node }) {--> | |
| 86 | + <!--return h('Button', {--> | |
| 87 | + <!--props: {--> | |
| 88 | + <!--type: 'ghost'--> | |
| 89 | + <!--}--> | |
| 90 | + <!--}, node.title)--> | |
| 91 | + <!--}--> | |
| 92 | + <!--}--> | |
| 93 | + <!--};--> | |
| 94 | +<!--</script>--> | |
| 95 | + | |
| 96 | + | |
| 1 | 97 | <template> |
| 2 | - <div> | |
| 3 | - <Tree :data="baseData" :load-data="loadData" multiple :render="renderFunc"></Tree> | |
| 4 | - <Button @click="handleAdd">add</Button> | |
| 5 | - <Button @click="handleUpdate">update</Button> | |
| 98 | + <div style="width: 400px;"> | |
| 99 | + <Tree :data="data4" :render="renderContent"></Tree> | |
| 6 | 100 | </div> |
| 7 | 101 | </template> |
| 8 | 102 | <script> |
| 9 | 103 | export default { |
| 10 | 104 | data () { |
| 11 | 105 | return { |
| 12 | - baseData: [ | |
| 106 | + data4: [ | |
| 13 | 107 | { |
| 14 | - expand: true, | |
| 15 | 108 | title: 'parent 1', |
| 109 | + expand: true, | |
| 16 | 110 | children: [ |
| 17 | 111 | { |
| 18 | - title: 'parent 1-0', | |
| 19 | - expand: false, | |
| 20 | - children: [], | |
| 21 | - loading: false | |
| 112 | + title: 'parent 1-1', | |
| 113 | + expand: true, | |
| 114 | + children: [ | |
| 115 | + { | |
| 116 | + title: 'leaf 1-1-1', | |
| 117 | + expand: true | |
| 118 | + }, | |
| 119 | + { | |
| 120 | + title: 'leaf 1-1-2', | |
| 121 | + expand: true | |
| 122 | + } | |
| 123 | + ] | |
| 22 | 124 | }, |
| 23 | 125 | { |
| 24 | - title: 'parent 1-1', | |
| 126 | + title: 'parent 1-2', | |
| 25 | 127 | expand: true, |
| 26 | - checked: true, | |
| 27 | 128 | children: [ |
| 28 | 129 | { |
| 29 | - title: 'leaf', | |
| 30 | - render: (h, { node }) => { | |
| 31 | - return h('Button', { | |
| 32 | - props: { | |
| 33 | - type: 'primary', | |
| 34 | - size: 'small' | |
| 35 | - }, | |
| 36 | - on: { | |
| 37 | - click: ({target}) => { | |
| 38 | - this.logger(target.textContent); | |
| 39 | - } | |
| 40 | - } | |
| 41 | - }, node.title + '000'); | |
| 42 | - } | |
| 130 | + title: 'leaf 1-2-1', | |
| 131 | + expand: true | |
| 132 | + }, | |
| 133 | + { | |
| 134 | + title: 'leaf 1-2-1', | |
| 135 | + expand: true | |
| 43 | 136 | } |
| 44 | 137 | ] |
| 45 | 138 | } |
| 46 | 139 | ] |
| 47 | 140 | } |
| 48 | - ] | |
| 49 | - }; | |
| 141 | + ], | |
| 142 | + buttonProps: { | |
| 143 | + type: 'ghost', | |
| 144 | + size: 'small', | |
| 145 | + } | |
| 146 | + } | |
| 50 | 147 | }, |
| 51 | 148 | methods: { |
| 52 | - handleAdd () { | |
| 53 | - this.baseData.push( | |
| 54 | - { | |
| 55 | - title: 'test name', | |
| 56 | - checked: true | |
| 149 | + renderContent (h, { node }) { | |
| 150 | + return h('span', { | |
| 151 | + style: { | |
| 152 | + display: 'inline-block', | |
| 153 | + width: '100%' | |
| 57 | 154 | } |
| 58 | - ); | |
| 59 | - }, | |
| 60 | - handleUpdate () { | |
| 61 | - const child = this.baseData[0].children[0].children[1]; | |
| 62 | - // console.log(JSON.stringify(this.baseData), '\n', JSON.stringify(child)); | |
| 63 | - if (!child) return this.$Message.error('Node is async and is not loaded yet'); | |
| 64 | - else this.$set(child, 'checked', true); | |
| 65 | - }, | |
| 66 | - logger (txt) { | |
| 67 | - console.log(txt); | |
| 68 | - }, | |
| 69 | - loadData (item, callback) { | |
| 70 | - setTimeout(() => { | |
| 71 | - callback([ | |
| 72 | - { | |
| 73 | - title: 'children-1', | |
| 74 | -// loading: false, | |
| 75 | - children: [] | |
| 76 | - }, | |
| 77 | - { | |
| 78 | - title: 'children-2', | |
| 79 | -// loading: false, | |
| 80 | - children: [] | |
| 155 | + }, [ | |
| 156 | + h('span', node.title), | |
| 157 | + h('span', { | |
| 158 | + style: { | |
| 159 | + display: 'inline-block', | |
| 160 | + float: 'right', | |
| 161 | + marginRight: '32px' | |
| 81 | 162 | } |
| 82 | - ]); | |
| 83 | - }, 2000); | |
| 163 | + }, [ | |
| 164 | + h('Button', { | |
| 165 | + props: Object.assign({}, this.buttonProps, { | |
| 166 | + icon: 'ios-plus-empty' | |
| 167 | + }), | |
| 168 | + style: { | |
| 169 | + marginRight: '8px' | |
| 170 | + }, | |
| 171 | + on: { | |
| 172 | + click: () => { this.append(node) } | |
| 173 | + } | |
| 174 | + }), | |
| 175 | + h('Button', { | |
| 176 | + props: Object.assign({}, this.buttonProps, { | |
| 177 | + icon: 'ios-minus-empty' | |
| 178 | + }), | |
| 179 | + on: { | |
| 180 | + click: () => { this.remove(node) } | |
| 181 | + } | |
| 182 | + }) | |
| 183 | + ]) | |
| 184 | + ]); | |
| 84 | 185 | }, |
| 85 | - renderFunc (h, { node }) { | |
| 86 | - return h('Button', { | |
| 87 | - props: { | |
| 88 | - type: 'ghost' | |
| 89 | - } | |
| 90 | - }, node.title) | |
| 186 | + append (node) { | |
| 187 | + this.$set(node, 'children', [{ | |
| 188 | + title: 'appended node', | |
| 189 | + expand: true | |
| 190 | + }]); | |
| 191 | + }, | |
| 192 | + remove (node) { | |
| 193 | + const parent = node.parent; | |
| 194 | + console.log(node); | |
| 91 | 195 | } |
| 92 | 196 | } |
| 93 | - }; | |
| 94 | -</script> | |
| 197 | + } | |
| 198 | +</script> | |
| 95 | 199 | \ No newline at end of file | ... | ... |