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 | <template> | 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 | </div> | 100 | </div> |
7 | </template> | 101 | </template> |
8 | <script> | 102 | <script> |
9 | export default { | 103 | export default { |
10 | data () { | 104 | data () { |
11 | return { | 105 | return { |
12 | - baseData: [ | 106 | + data4: [ |
13 | { | 107 | { |
14 | - expand: true, | ||
15 | title: 'parent 1', | 108 | title: 'parent 1', |
109 | + expand: true, | ||
16 | children: [ | 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 | expand: true, | 127 | expand: true, |
26 | - checked: true, | ||
27 | children: [ | 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 | methods: { | 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 | \ No newline at end of file | 199 | \ No newline at end of file |