|
1 | 1 | <template> |
2 | 2 | <div class="json-tree-demo"> |
3 | 3 | <el-card> |
4 | | - <el-form label-width="70px" label-position="left"> |
5 | | - <el-form-item label="连接线"> |
| 4 | + <el-form label-width="180px" label-position="left"> |
| 5 | + <el-form-item label="连接线(Connector Line)"> |
6 | 6 | <el-switch v-model="showLine" /> |
7 | 7 | </el-form-item> |
8 | | - <el-form-item label="图标风格"> |
| 8 | + <el-form-item label="图标风格(Toggle Icon)"> |
9 | 9 | <el-radio-group v-model="toggle" size="small"> |
10 | 10 | <el-radio-button label="default">默认风格</el-radio-button> |
11 | 11 | <el-radio-button label="caret">自定义风格 1</el-radio-button> |
12 | 12 | <el-radio-button label="arrow">自定义风格 2</el-radio-button> |
13 | 13 | </el-radio-group> |
14 | 14 | </el-form-item> |
15 | | - <el-form-item label="层级缩进"> |
| 15 | + <el-form-item label="层级缩进(Deep Indent)"> |
16 | 16 | <el-radio-group v-model="indent" size="small"> |
17 | 17 | <el-radio-button |
18 | 18 | v-for="(item, i) in indents" |
|
22 | 22 | </el-radio-button> |
23 | 23 | </el-radio-group> |
24 | 24 | </el-form-item> |
25 | | - <el-form-item label="展开层级"> |
26 | | - <el-input-number v-model="deep" size="small" /> |
| 25 | + <el-form-item label="展开层级(Expand Deep)"> |
| 26 | + <el-input-number v-model="deep" :min="0" size="small" /> |
27 | 27 | </el-form-item> |
28 | 28 | </el-form> |
29 | 29 |
|
30 | 30 | </el-card> |
31 | 31 |
|
32 | 32 | <div style="margin: 20px 0;"> |
33 | | - <el-button size="small" @click="onExpandAll">全部展开</el-button> |
34 | | - <el-button size="small" @click="onCollapseAll">全部收起</el-button> |
| 33 | + <el-button size="small" @click="onExpandAll"> |
| 34 | + 全部展开(Expand All) |
| 35 | + </el-button> |
| 36 | + <el-button size="small" @click="onCollapseAll"> |
| 37 | + 全部收起(Collapse All) |
| 38 | + </el-button> |
35 | 39 | </div> |
36 | 40 |
|
37 | | - <JsonTree ref="jsonTree" |
| 41 | + <JsonTree v-if="showJsonTree" |
| 42 | + ref="jsonTree" |
38 | 43 | :json-data="jsonData" |
39 | 44 | :show-line="showLine" |
40 | | - :indent="indent"> |
41 | | - <template v-if="toggle !== 'default'" #toggle="{ collapse }"> |
42 | | - <i :class="calcToggleClass(collapse)"></i> |
43 | | - </template> |
44 | | - <template #count="{ count, type }"> |
45 | | - (值类型:{{ type }},共:{{ count }} 项) |
46 | | - </template> |
47 | | - </JsonTree> |
| 45 | + :indent="indent" |
| 46 | + :expand-deep="deep" |
| 47 | + /> |
48 | 48 | </div> |
49 | 49 | </template> |
50 | 50 |
|
51 | 51 | <script> |
| 52 | +import { jsonData } from '../mock/data' |
| 53 | +
|
52 | 54 | export default { |
53 | 55 | name: 'JsonTreeDemo', |
54 | 56 | data () { |
55 | 57 | return { |
| 58 | + showJsonTree: true, |
56 | 59 | showLine: true, |
57 | 60 | indent: '20px', |
58 | 61 | deep: 2, |
59 | 62 | indents: ['5px', '10px', '20px', '30px', '40px', '50px'], |
60 | 63 | toggle: 'default', |
61 | | - jsonData: { |
62 | | - name: 'Tom', |
63 | | - age: 7, |
64 | | - nums: [1, 1, 2, 3, 5, 8, 13, 21, 34], |
65 | | - techs: [ |
66 | | - { text: 'coding', label: 1 }, |
67 | | - { text: 'fishing', label: 2 }, |
68 | | - { text: 'gaming', label: 3 } |
69 | | - ] |
70 | | - } |
| 64 | + jsonData |
| 65 | + } |
| 66 | + }, |
| 67 | + watch: { |
| 68 | + deep () { |
| 69 | + this.showJsonTree = false |
| 70 | + this.$nextTick(() => { |
| 71 | + this.showJsonTree = true |
| 72 | + }) |
71 | 73 | } |
72 | 74 | }, |
73 | 75 | methods: { |
|
0 commit comments