Blame view

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