File tree Expand file tree Collapse file tree 4 files changed +36
-6
lines changed Expand file tree Collapse file tree 4 files changed +36
-6
lines changed Original file line number Diff line number Diff line change 18
18
<brackets-left
19
19
:visiable.sync =" visiable"
20
20
:data =" data"
21
+ :show-length =" showLength"
21
22
:not-last-key =" notLastKey" >
22
23
<span v-if =" currentDeep > 1 && !Array.isArray(parentData)" >{{ currentKey }}:</span >
23
24
</brackets-left >
32
33
:parent-data =" data"
33
34
:data =" item"
34
35
:deep =" deep"
36
+ :show-length =" showLength"
35
37
:path =" path + (Array.isArray(data) ? `[${key}]` : `.${key}`)"
36
38
:path-checked =" pathChecked"
37
39
:path-selectable =" pathSelectable"
84
86
type: Number ,
85
87
default: Infinity
86
88
},
89
+ // 是否显示数组|对象的长度
90
+ showLength: {
91
+ type: Boolean ,
92
+ default: false
93
+ },
87
94
// 数据层级顶级路径
88
95
path: {
89
96
type: String ,
171
178
handleMouseout () {
172
179
this .existMouseover && this .selectable && (this .treeContentBackground = ' transparent' )
173
180
},
174
- // 工具函数: 判断是否对象
181
+ // 是否对象
175
182
isObject (value ) {
176
183
return this .getDataType (value) === ' object'
177
184
},
Original file line number Diff line number Diff line change 4
4
<span
5
5
v-show =" dataVisiable"
6
6
class =" vjs__tree__node"
7
- @click.stop =" dataVisiable = !dataVisiable " >
7
+ @click.stop =" toggleBrackets " >
8
8
{{ Array.isArray(data) ? '[' : '{' }}
9
9
</span >
10
10
<span
11
11
v-show =" !dataVisiable"
12
12
class =" vjs__tree__node"
13
- @click.stop =" dataVisiable = !dataVisiable " >
14
- {{ bracketsFormatter(Array.isArray( data) ? '[...]' : '{...}' ) }}
13
+ @click.stop =" toggleBrackets " >
14
+ {{ doubleBracketsGenerator( data) }}
15
15
</span >
16
16
</div >
17
17
</template >
20
20
import bracketsMixin from ' src/mixins/brackets-mixin'
21
21
22
22
export default {
23
- mixins: [bracketsMixin]
23
+ mixins: [bracketsMixin],
24
+ props: {
25
+ showLength: Boolean
26
+ },
27
+ methods: {
28
+ // 双括号内容生成器
29
+ doubleBracketsGenerator (data ) {
30
+ const isArray = Array .isArray (data)
31
+ const brackets = isArray ? ' [...]' : ' {...}'
32
+ if (this .showLength ) {
33
+ // 若展示长度, 形如 [...] // 3 items
34
+ const text = isArray
35
+ ? ` ${ data .length } items`
36
+ : ` ${ Object .keys (data).length } keys`
37
+ brackets += ` // ${ text} `
38
+ }
39
+ return bracketsFormatter (brackets)
40
+ }
41
+ }
24
42
}
25
43
</script >
Original file line number Diff line number Diff line change 2
2
<div v-show =" dataVisiable" >
3
3
<span
4
4
class =" vjs__tree__node"
5
- @click.stop =" dataVisiable = !dataVisiable " >
5
+ @click.stop =" toggleBrackets " >
6
6
{{ bracketsFormatter(Array.isArray(data) ? ']' : '}') }}
7
7
</span >
8
8
</div >
Original file line number Diff line number Diff line change @@ -20,6 +20,11 @@ export default {
20
20
}
21
21
} ,
22
22
methods : {
23
+ // 切换括号展开|关闭
24
+ toggleBrackets ( ) {
25
+ this . dataVisiable = ! this . dataVisiable
26
+ } ,
27
+ // 括号优化函数, 若不是最后一项, 自动添加逗号
23
28
bracketsFormatter ( brackets ) {
24
29
return this . notLastKey ? `${ brackets } ,` : brackets
25
30
}
You can’t perform that action at this time.
0 commit comments