File tree 2 files changed +26
-15
lines changed
docs/src/components/common-ui
packages/effects/common-ui/src/components/api-component
2 files changed +26
-15
lines changed Original file line number Diff line number Diff line change @@ -151,7 +151,7 @@ function fetchApi(): Promise<Record<string, any>> {
151
151
| options | 直接传入选项数据,也作为api返回空数据时的后备数据 | ` OptionsItem[] ` | - | - |
152
152
| visibleEvent | 触发重新请求数据的事件名 | ` string ` | - | - |
153
153
| loadingSlot | 目标组件的插槽名称,用来显示一个"加载中"的图标 | ` string ` | - | - |
154
- | autoSelect | 自动设置选项 | ` 'first' \| 'last' \| 'none' \| false ` | ` false ` | >5.5.4 |
154
+ | autoSelect | 自动设置选项 | ` 'first' \| 'last' \| 'one'\| (item: OptionsItem[]) => OptionsItem \| false ` | ` false ` | >5.5.4 |
155
155
156
156
#### autoSelect 自动设置选项
157
157
@@ -160,6 +160,7 @@ function fetchApi(): Promise<Record<string, any>> {
160
160
- ` first ` :自动选择第一个选项
161
161
- ` last ` :自动选择最后一个选项
162
162
- ` one ` :有且仅有一个选项时,自动选择它
163
+ - ` 函数 ` :自定义选择逻辑,函数的参数为options,返回值为选择的选项
163
164
- false:不自动选择选项
164
165
165
166
### Methods
Original file line number Diff line number Diff line change @@ -59,9 +59,15 @@ interface Props {
59
59
* - `first`:自动选择第一个选项
60
60
* - `last`:自动选择最后一个选项
61
61
* - `one`: 当请求的结果只有一个选项时,自动选择该选项
62
+ * - 函数:自定义选择逻辑,函数的参数为请求的结果数组,返回值为选择的选项
62
63
* - false:不自动选择(默认)
63
64
*/
64
- autoSelect? : ' first' | ' last' | ' one' | false ;
65
+ autoSelect? :
66
+ | ' first'
67
+ | ' last'
68
+ | ' one'
69
+ | ((item : OptionsItem []) => OptionsItem )
70
+ | false ;
65
71
}
66
72
67
73
defineOptions ({ name: ' ApiComponent' , inheritAttrs: false });
@@ -209,24 +215,28 @@ function emitChange() {
209
215
unref (getOptions ).length > 0
210
216
) {
211
217
let firstOption;
212
- switch (props .autoSelect ) {
213
- case ' first' : {
214
- firstOption = unref (getOptions )[0 ];
215
- break ;
216
- }
217
- case ' last' : {
218
- firstOption = unref (getOptions )[unref (getOptions ).length - 1 ];
219
- break ;
220
- }
221
- case ' one' : {
222
- if (unref (getOptions ).length === 1 ) {
218
+ if (isFunction (props .autoSelect )) {
219
+ firstOption = props .autoSelect (unref (getOptions ));
220
+ } else {
221
+ switch (props .autoSelect ) {
222
+ case ' first' : {
223
223
firstOption = unref (getOptions )[0 ];
224
+ break ;
225
+ }
226
+ case ' last' : {
227
+ firstOption = unref (getOptions )[unref (getOptions ).length - 1 ];
228
+ break ;
229
+ }
230
+ case ' one' : {
231
+ if (unref (getOptions ).length === 1 ) {
232
+ firstOption = unref (getOptions )[0 ];
233
+ }
234
+ break ;
224
235
}
225
- break ;
226
236
}
227
237
}
228
238
229
- if (firstOption ) modelValue .value = firstOption [ props . valueField ] ;
239
+ if (firstOption ) modelValue .value = firstOption . value ;
230
240
}
231
241
emit (' optionsChange' , unref (getOptions ));
232
242
}
You can’t perform that action at this time.
0 commit comments