Vue實(shí)現(xiàn)控制商品數(shù)量組件封裝及使用
更新時間:2021年09月23日 11:44:40 作者:run-Ameng
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)控制商品數(shù)量組件的封裝及使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
Vue控制商品數(shù)量組件的封裝及使用,供大家參考,具體內(nèi)容如下
要實(shí)現(xiàn)效果

控制商品數(shù)量組件封裝 Numbox
<template>
<div class="xtx-numbox">
<div class="label">
<slot />
</div>
<div class="numbox">
<a href="javascript:;" @click='toggle(-1)'>-</a>
<input type="text" readonly :value="num">
<a href="javascript:;" @click='toggle(1)'>+</a>
</div>
</div>
</template>
<script>
import { useVModel } from '@vueuse/core'
export default {
name: 'XtxNumbox',
props: {
modelValue: {
type: Number,
default: 1
},
inventory: {
type: Number,
required: true
}
},
setup (props, { emit }) {
// 基于第三方的方法控制數(shù)據(jù)的雙向綁定
const num = useVModel(props, 'modelValue', emit)
// 控制商品數(shù)據(jù)的變更操作
const toggle = (n) => {
if (n < 0) {
// 減一操作
if (num.value > 1) {
num.value -= 1
}
} else {
// 加一操作
if (num.value < 10) {
num.value += 1
}
}
}
return { num, toggle }
}
}
</script>
<style scoped lang="less">
.xtx-numbox {
display: flex;
align-items: center;
.label {
width: 60px;
color: #999;
padding-left: 10px;
}
.numbox {
width: 120px;
height: 30px;
border: 1px solid #e4e4e4;
display: flex;
> a {
width: 29px;
line-height: 28px;
text-align: center;
background: #f8f8f8;
font-size: 16px;
color: #666;
&:first-of-type {
border-right: 1px solid #e4e4e4;
}
&:last-of-type {
border-left: 1px solid #e4e4e4;
}
}
> input {
width: 60px;
padding: 0 5px;
text-align: center;
color: #666;
}
}
}
</style>
在父組件使用
<Numbox v-model='num' >數(shù)量</XtxNumbox>
setup(){
// 商品的數(shù)量 // 默認(rèn)值是1
const num=ref(1)
return {
num
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法
這篇文章主要介紹了Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
解決VUE-Router 同一頁面第二次進(jìn)入不刷新的問題
這篇文章主要介紹了解決VUE-Router 同一頁面第二次進(jìn)入不刷新的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
vue短信驗(yàn)證性能優(yōu)化如何寫入localstorage中
這篇文章主要介紹了vue短信驗(yàn)證性能優(yōu)化寫入localstorage中的方法,解決這個問題需要把時間都寫到localstorage里面去,具體解決方法大家參考下本文2018-04-04
Vue.js計(jì)算屬性的變化監(jiān)聽的示例詳解
在Vue.js中,計(jì)算屬性(computed properties)是組件的重要組成部分,它們根據(jù)組件的數(shù)據(jù)自動計(jì)算新的值,并在數(shù)據(jù)變化時自動更新,本文將深入探討如何在Vue.js中監(jiān)聽計(jì)算屬性的變化,幫助你更好地理解Vue.js的響應(yīng)式系統(tǒng),需要的朋友可以參考下2025-03-03

