步進(jìn)器由增加按鈕、減少按鈕和輸入框組成,用于在一定范圍內(nèi)輸入、調(diào)整數(shù)字。
import Vue from 'vue';
import { Stepper } from 'vant';
Vue.use(Stepper);
通過 v-model
綁定輸入值,可以通過 change
事件監(jiān)聽到輸入值的變化。
<van-stepper v-model="value" />
export default {
data() {
return {
value: 1,
};
},
};
通過 step
屬性設(shè)置每次點(diǎn)擊增加或減少按鈕時(shí)變化的值,默認(rèn)為 1
。
<van-stepper v-model="value" step="2" />
通過 min
和 max
屬性限制輸入值的范圍。
<van-stepper v-model="value" min="5" max="8" />
設(shè)置 integer
屬性后,輸入框?qū)⑾拗浦荒茌斎胝麛?shù)。
<van-stepper v-model="value" integer />
通過設(shè)置 disabled
屬性來禁用步進(jìn)器,禁用狀態(tài)下無法點(diǎn)擊按鈕或修改輸入框。
<van-stepper v-model="value" disabled />
通過設(shè)置 disable-input
屬性來禁用輸入框,此時(shí)按鈕仍然可以點(diǎn)擊。
<van-stepper v-model="value" disable-input />
通過設(shè)置 decimal-length
屬性可以保留固定的小數(shù)位數(shù)。
<van-stepper v-model="value" step="0.2" :decimal-length="1" />
通過 input-width
屬性設(shè)置輸入框?qū)挾?,通過 button-size
屬性設(shè)置按鈕大小和輸入框高度。
<van-stepper v-model="value" input-width="40px" button-size="32px" />
如果需要異步地修改輸入框的值,可以設(shè)置 async-change
屬性,并在 change
事件中手動(dòng)修改 value
。
<van-stepper :value="value" async-change @change="onChange" />
import { Toast } from 'vant';
export default {
data() {
return {
value: 1,
};
},
methods: {
onChange(value) {
Toast.loading({ forbidClick: true });
clearTimeout(this.timer);
this.timer = setTimeout(() => {
Toast.clear();
// 注意此時(shí)修改 value 后會(huì)再次觸發(fā) change 事件
this.value = value;
}, 500);
},
},
};
將 theme
設(shè)置為 round
來展示圓角風(fēng)格的步進(jìn)器。
<van-stepper v-model="value" theme="round" button-size="22" disable-input />
參數(shù) | 說明 | 類型 | 默認(rèn)值 |
---|---|---|---|
v-model | 當(dāng)前輸入的值 | number | string | - |
min | 最小值 | number | string | 1
|
max | 最大值 | number | string | - |
default-value | 初始值,當(dāng) v-model 為空時(shí)生效 | number | string | 1
|
step | 步長,每次點(diǎn)擊時(shí)改變的值 | number | string | 1
|
name | 標(biāo)識(shí)符,可以在change 事件回調(diào)參數(shù)中獲取 |
number | string | - |
input-width | 輸入框?qū)挾?,默認(rèn)單位為px
|
number | string | 32px
|
button-size | 按鈕大小以及輸入框高度,默認(rèn)單位為px
|
number | string | 28px
|
decimal-length | 固定顯示的小數(shù)位數(shù) | number | string | - |
theme v2.8.2
|
樣式風(fēng)格,可選值為 round
|
string | - |
placeholder v2.8.6
|
輸入框占位提示文字 | string | - |
integer | 是否只允許輸入整數(shù) | boolean | false
|
disabled | 是否禁用步進(jìn)器 | boolean | false
|
disable-plus | 是否禁用增加按鈕 | boolean | false
|
disable-minus | 是否禁用減少按鈕 | boolean | false
|
disable-input | 是否禁用輸入框 | boolean | false
|
async-change | 是否開啟異步變更,開啟后需要手動(dòng)控制輸入值 | boolean | false
|
show-plus | 是否顯示增加按鈕 | boolean | true
|
show-minus | 是否顯示減少按鈕 | boolean | true
|
show-input v2.12.1
|
是否顯示輸入框 | boolean | true
|
long-press | 是否開啟長按手勢(shì) | boolean | true
|
allow-empty v2.9.1
|
是否允許輸入的值為空 | boolean | false
|
事件名 | 說明 | 回調(diào)參數(shù) |
---|---|---|
change | 當(dāng)綁定值變化時(shí)觸發(fā)的事件 | value: string, detail: { name: string } |
overlimit | 點(diǎn)擊不可用的按鈕時(shí)觸發(fā) | - |
plus | 點(diǎn)擊增加按鈕時(shí)觸發(fā) | - |
minus | 點(diǎn)擊減少按鈕時(shí)觸發(fā) | - |
focus | 輸入框聚焦時(shí)觸發(fā) | event: Event |
blur | 輸入框失焦時(shí)觸發(fā) | event: Event |
組件提供了下列 Less 變量,可用于自定義樣式,使用方法請(qǐng)參考主題定制。
名稱 | 默認(rèn)值 | 描述 |
---|---|---|
@stepper-active-color | #e8e8e8
|
- |
@stepper-background-color | @active-color
|
- |
@stepper-button-icon-color | @text-color
|
- |
@stepper-button-disabled-color | @background-color
|
- |
@stepper-button-disabled-icon-color | @gray-5
|
- |
@stepper-button-round-theme-color | @red
|
- |
@stepper-input-width | 32px
|
- |
@stepper-input-height | 28px
|
- |
@stepper-input-font-size | @font-size-md
|
- |
@stepper-input-line-height | normal
|
- |
@stepper-input-text-color | @text-color
|
- |
@stepper-input-disabled-text-color | @gray-5
|
- |
@stepper-input-disabled-background-color | @active-color
|
- |
@stepper-border-radius | @border-radius-md
|
- |
這是因?yàn)橛脩糨斎脒^程中可能出現(xiàn)小數(shù)點(diǎn)或空值,比如 1.
,這種情況下組件會(huì)拋出字符串類型。
如果希望 value 保持 number 類型,可以在 v-model 上添加 number
修飾符:
<van-stepper v-model.number="value" />
更多建議: