|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<Select
|
|
|
- @dropdownVisibleChange="handleFetch"
|
|
|
+ @dropdown-visible-change="handleFetch"
|
|
|
v-bind="$attrs"
|
|
|
@change="handleChange"
|
|
|
:options="getOptions"
|
|
@@ -57,6 +57,7 @@
|
|
|
labelField: propTypes.string.def('label'),
|
|
|
valueField: propTypes.string.def('value'),
|
|
|
immediate: propTypes.bool.def(true),
|
|
|
+ alwaysLoad: propTypes.bool.def(false),
|
|
|
},
|
|
|
emits: ['options-change', 'change'],
|
|
|
setup(props, { emit }) {
|
|
@@ -87,7 +88,7 @@
|
|
|
});
|
|
|
|
|
|
watchEffect(() => {
|
|
|
- props.immediate && fetch();
|
|
|
+ props.immediate && !props.alwaysLoad && fetch();
|
|
|
});
|
|
|
|
|
|
watch(
|
|
@@ -121,10 +122,14 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async function handleFetch() {
|
|
|
- if (!props.immediate && unref(isFirstLoad)) {
|
|
|
- await fetch();
|
|
|
- isFirstLoad.value = false;
|
|
|
+ async function handleFetch(visible) {
|
|
|
+ if (visible) {
|
|
|
+ if (props.alwaysLoad) {
|
|
|
+ await fetch();
|
|
|
+ } else if (!props.immediate && unref(isFirstLoad)) {
|
|
|
+ await fetch();
|
|
|
+ isFirstLoad.value = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|