6
6
:class =" referenceCls"
7
7
@click =" handleRefClick"
8
8
>
9
- <slot >
9
+ <slot v-bind = " slotProps " >
10
10
<div :class =" displayInputCls" >
11
11
<span :class =" displayInputTextCls" >
12
- <slot name =" display" >
12
+ <slot
13
+ name =" display"
14
+ v-bind =" slotProps"
15
+ >
13
16
{{ displayValue }}
14
17
</slot >
15
18
</span >
@@ -178,6 +181,21 @@ export default (Vue as VueConstructor<Vue & {
178
181
179
182
/** 单选选中节点名称 */
180
183
selectedTitle: (' ' as TreeNodeKeyType ),
184
+
185
+ /** 展示 slot 的 props */
186
+ slotProps: {
187
+ /** 多选选中的节点 */
188
+ checkedNodes: [] as TreeNode [],
189
+
190
+ /** 多选选中的节点 key */
191
+ checkedKeys: [] as TreeNodeKeyType [],
192
+
193
+ /** 单选选中的节点 */
194
+ selectedNode: null as TreeNode | null ,
195
+
196
+ /** 单选选中的节点 key */
197
+ selectedKey: null as TreeNodeKeyType | null ,
198
+ },
181
199
}
182
200
},
183
201
computed: {
@@ -364,9 +382,14 @@ export default (Vue as VueConstructor<Vue & {
364
382
}
365
383
},
366
384
handleCheckedChange (nodes : TreeNode [], keys : TreeNodeKeyType []): void {
385
+ this .slotProps .checkedNodes = nodes
386
+ this .slotProps .checkedKeys = keys
367
387
this .checkedCount = keys .length
368
388
},
369
389
handleSelectedChange (node : TreeNode | null , key : TreeNodeKeyType | null ): void {
390
+ this .slotProps .selectedNode = node
391
+ this .slotProps .selectedKey = key
392
+
370
393
if (node ) {
371
394
const titleField = this .$refs .treeSearch .$refs .tree .titleField
372
395
this .selectedTitle = node [titleField ]
@@ -380,8 +403,13 @@ export default (Vue as VueConstructor<Vue & {
380
403
381
404
/** 处理树数据更新 */
382
405
handleSetData (): void {
406
+ this .slotProps .checkedNodes = this .getCheckedNodes ()
407
+ this .slotProps .checkedKeys = this .getCheckedKeys ()
408
+ this .slotProps .selectedNode = this .getSelectedNode ()
409
+ this .slotProps .selectedKey = this .getSelectedKey ()
410
+
383
411
if (this .checkable ) {
384
- this .checkedCount = this .getCheckedKeys () .length
412
+ this .checkedCount = this .slotProps . checkedKeys .length
385
413
}
386
414
if (this .selectable ) {
387
415
if (this .value != null ) {
0 commit comments