标签:封装 default 手动 width props 组件 type color
基础结构
<template>
<div class="xtx-numbox">
<div class="label">数量</div>
<div class="numbox">
<a href="javascript:;">-</a>
<input type="text" readonly value="1">
<a href="javascript:;">+</a>
</div>
</div>
</template>
<script>
export default {
name: 'XtxNumbox'
}
</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>
添加点击事件
// 在数量选择组件中
<template>
<div class="xtx-numbox">
<div class="label">{{label}}</div>
<div class="numbox">
<a href="javascript:;" @click="changeNum(-1)">-</a>
<input type="text" readonly :value="num">
<a href="javascript:;" @click="changeNum(1)">+</a>
</div>
</div>
</template>
代码逻辑
<script>
export default {
name: 'XtxNumbox',
props: {
label: { type: String, default: '数量' },
modelValue: { type: Number, default: 1 },
min: { type: Number, default: 0 },
max: { type: Number, default: 10000 }
},
setup (props, { emit }) {
const changeNum = (step) => {
let t = step + props.modelValue
// 3. 得到将要改变的值,如果值不合法终止程序
if (t < props.min || t > props.max) return
emit('update:modelValue', t)
}
return { changeNum }
}
}
父组件中引用
1.导入
<XtxNumbox label="数量" v-model="num" :min="0" :max="goodsData.inventory" />
2.定义数据项
setup () {
// 显示数量组件中的num
const num = ref(1)
return { num }
}
标签:封装,default,手动,width,props,组件,type,color 来源: https://blog.csdn.net/weixin_55633731/article/details/119090149
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。