101
101
102
102
:::
103
103
104
+ ## 在改变之前调用
105
+
106
+ ` on-before-change ` 可以在选择前改变之前调用,它需要返回一个 [ Promise] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise ) ,Promise 需要返回一个布尔值,返回 true 将需要改变,返回 false 则终止改变
107
+
108
+ ::: demo
109
+
110
+ <template #source>
111
+ <f-select v-model =" value4 " placeholder =" 请选择…… " :on-before-change =" onBeforeChange " >
112
+ <f-option :value =" 1 " >香蕉</f-option >
113
+ <f-option :value =" 2 " >苹果</f-option >
114
+ <f-option :value =" 3 " >哈密瓜</f-option >
115
+ <f-option :value =" 4 " >樱桃</f-option >
116
+ </f-select >
117
+ </template >
118
+
119
+ ``` html
120
+ <template >
121
+ <f-select v-model =" value4" placeholder =" 请选择……" :on-before-change =" onBeforeChange" >
122
+ <f-option :value =" 1" >香蕉</f-option >
123
+ <f-option :value =" 2" >苹果</f-option >
124
+ <f-option :value =" 3" >哈密瓜</f-option >
125
+ <f-option :value =" 4" >樱桃</f-option >
126
+ </f-select >
127
+ </template >
128
+
129
+ <script lang =" ts" setup >
130
+ import { ref } from ' vue'
131
+ import { FConfirmBox } from ' fighting-design'
132
+
133
+ const value4 = ref (' ' )
134
+
135
+ const onBeforeChange = (): Promise < boolean> => {
136
+ return new Promise (resolve => {
137
+ FConfirmBox ({
138
+ title: ' 标题' ,
139
+ content: ' 这是内容' ,
140
+ zIndex: 2000 ,
141
+ onConfirm : () => {
142
+ resolve (true )
143
+ },
144
+ onCancel : () => {
145
+ resolve (false )
146
+ }
147
+ })
148
+ })
149
+ }
150
+ </script >
151
+ ```
152
+
153
+ :::
154
+
104
155
## Select Attributes
105
156
106
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
107
- | -------------------- | -------------------------- | ------------------------------------------------------------------ | ------------------------------- | ------ |
108
- | ` v-model:modelValue ` | 绑定值 | <a href =" #selectmodelvalue " >SelectModelValue</a > | —— | —— |
109
- | ` width ` | 自定义宽度 | string / number | —— | 190 |
110
- | ` name ` | 原生 name 属性 | string | —— | —— |
111
- | ` placeholder ` | 占位符 | string | —— | —— |
112
- | ` clear ` | 是否可清除 | boolean | —— | false |
113
- | ` disabled ` | 是否禁用 | boolean | —— | false |
114
- | ` filter ` | 是否可过滤 | boolean | —— | false |
115
- | ` size ` | 尺寸 | <a href =" /components/interface.html#fightingsize " >FightingSize</a > | ` large ` ` middle ` ` small ` ` mini ` | middle |
116
- | ` on-change ` | 绑定值发生改变时触发的回调 | <a href =" #selectchange " >SelectChange</a > | —— | —— |
157
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
158
+ | -------------------- | ------------------------------ | ------------------------------------------------------------------ | ------------------------------- | ------ |
159
+ | ` v-model:modelValue ` | 绑定值 | <a href =" #selectmodelvalue " >SelectModelValue</a > | —— | —— |
160
+ | ` width ` | 自定义宽度 | string / number | —— | 190 |
161
+ | ` name ` | 原生 name 属性 | string | —— | —— |
162
+ | ` placeholder ` | 占位符 | string | —— | —— |
163
+ | ` clear ` | 是否可清除 | boolean | —— | false |
164
+ | ` disabled ` | 是否禁用 | boolean | —— | false |
165
+ | ` filter ` | 是否可过滤 | boolean | —— | false |
166
+ | ` size ` | 尺寸 | <a href =" /components/interface.html#fightingsize " >FightingSize</a > | ` large ` ` middle ` ` small ` ` mini ` | middle |
167
+ | ` on-change ` | 绑定值发生改变时触发的回调 | <a href =" #selectchange " >SelectChange</a > | —— | —— |
168
+ | ` on-before-change ` | 绑定值发生改变时之前触发的回调 | <a href =" #selectbeforechange " >SelectBeforeChange</a > | —— | —— |
117
169
118
170
## Select Slots
119
171
@@ -145,6 +197,7 @@ import type {
145
197
SelectProps ,
146
198
SelectModelValue ,
147
199
SelectChange ,
200
+ SelectBeforeChange ,
148
201
OptionInstance ,
149
202
OptionProps
150
203
} from ' fighting-design'
@@ -166,6 +219,12 @@ type SelectChange = (
166
219
) => void
167
220
` ` `
168
221
222
+ ### SelectBeforeChange
223
+
224
+ ` ` ` ts
225
+ type SelectBeforeChange = () => Promise <boolean >
226
+ ` ` `
227
+
169
228
## Contributors
170
229
171
230
<a href="https://github.com/Tyh2001" target="_blank">
@@ -178,7 +237,26 @@ type SelectChange = (
178
237
179
238
<script lang="ts" setup>
180
239
import { ref } from 'vue'
240
+ import { FConfirmBox } from 'fighting-design'
181
241
import demo1Vue from './demos/select/demo1.vue'
182
242
import demo2Vue from './demos/select/demo2.vue'
183
243
import demo3Vue from './demos/select/demo3.vue'
244
+
245
+ const value4 = ref('')
246
+
247
+ const onBeforeChange = (): Promise<boolean> => {
248
+ return new Promise(resolve => {
249
+ FConfirmBox({
250
+ title: '标题',
251
+ content: '这是内容',
252
+ zIndex: 2000,
253
+ onConfirm: () => {
254
+ resolve(true)
255
+ },
256
+ onCancel: () => {
257
+ resolve(false)
258
+ }
259
+ })
260
+ })
261
+ }
184
262
</script>
0 commit comments