File tree Expand file tree Collapse file tree 4 files changed +145
-1
lines changed
Expand file tree Collapse file tree 4 files changed +145
-1
lines changed Original file line number Diff line number Diff line change 77 <!-- <FormExample></FormExample> -->
88 <!-- 插槽 -->
99 <!-- <SlotExample></SlotExample> -->
10+ <!-- 递归 -->
11+ <TreeExample ></TreeExample >
1012 </div >
1113</template >
1214
1315<script >
1416import Communication from ' @/components/communication' ;
1517import FormExample from ' @/components/form' ;
1618import SlotExample from ' @/components/slots' ;
19+ import TreeExample from ' @/components/recursion' ;
1720
1821export default {
1922 name: ' HelloWorld' ,
@@ -23,7 +26,8 @@ export default {
2326 components: {
2427 Communication,
2528 FormExample,
26- SlotExample
29+ SlotExample,
30+ TreeExample
2731 },
2832}
2933 </script >
Original file line number Diff line number Diff line change 1+ <template >
2+ <div class =" kkb-tree" >
3+ <TreeNode v-for =" item in data" :key =" item.title" :model =" item" ></TreeNode >
4+ </div >
5+ </template >
6+
7+ <script >
8+ import TreeNode from " @/components/recursion/TreeNode.vue" ;
9+ export default {
10+ props: {
11+ data: {
12+ type: Array ,
13+ required: true
14+ }
15+ },
16+ components: {
17+ TreeNode
18+ }
19+ };
20+ </script >
21+
22+ <style scoped>
23+ .kkb-tree {
24+ text-align : left ;
25+ }
26+ </style >
Original file line number Diff line number Diff line change 1+ <template >
2+ <div >
3+ <div @click =" toggle" :style =" {paddingLeft: (level-1)+'em'}" >
4+ <label >{{model.title}}</label >
5+ <span v-if =" isFolder" >[{{open ? '-' : '+'}}]</span >
6+ </div >
7+ <div v-show =" open" v-if =" isFolder" >
8+ <tree-node class =" item" v-for =" model in model.children"
9+ :model =" model" :key =" model.title"
10+ :level =" level + 1" ></tree-node >
11+ </div >
12+ </div >
13+ </template >
14+
15+ <script >
16+ export default {
17+ name: " tree-node" ,
18+ props: {
19+ model: Object ,
20+ level: {
21+ type: Number ,
22+ default: 1
23+ }
24+ },
25+ data : function () {
26+ return {
27+ open: false
28+ };
29+ },
30+ computed: {
31+ isFolder : function () {
32+ return this .model .children && this .model .children .length ;
33+ }
34+ },
35+ methods: {
36+ toggle : function () {
37+ if (this .isFolder ) {
38+ this .open = ! this .open ;
39+ }
40+ },
41+ }
42+ };
43+ </script >
Original file line number Diff line number Diff line change 1+ <template >
2+ <Tree :data =" treeData" ></Tree >
3+ </template >
4+
5+ <script >
6+ import Tree from " @/components/recursion/Tree.vue" ;
7+ export default {
8+ data () {
9+ return {
10+ treeData: [
11+ {
12+ title: " Web全栈架构师" ,
13+ children: [
14+ {
15+ title: " Java架构师"
16+ },
17+ {
18+ title: " JS高级" ,
19+ children: [
20+ {
21+ title: " ES6"
22+ },
23+ {
24+ title: " 动效"
25+ }
26+ ]
27+ },
28+ {
29+ title: " Web全栈" ,
30+ children: [
31+ {
32+ title: " Vue训练营" ,
33+ expand: true ,
34+ children: [
35+ {
36+ title: " 组件化"
37+ },
38+ {
39+ title: " 源码"
40+ },
41+ {
42+ title: " docker部署"
43+ }
44+ ]
45+ },
46+ {
47+ title: " React" ,
48+ children: [
49+ {
50+ title: " JSX"
51+ },
52+ {
53+ title: " 虚拟DOM"
54+ }
55+ ]
56+ },
57+ {
58+ title: " Node"
59+ }
60+ ]
61+ }
62+ ]
63+ }
64+ ]
65+ };
66+ },
67+ components: {
68+ Tree
69+ }
70+ };
71+ </script >
You can’t perform that action at this time.
0 commit comments