backgroundWhen you open the product details on some shopping mall web pages, there will be a counter to select the purchase quantity. Such a timer will not only be displayed on the product details page but also in the shopping cart. Then the timer can be encapsulated into a component for better reuse and later maintenance. Landing code<template> <div class="xtx-numbox"> <div class="label"><slot /></div> <div class="numbox"> <a href="javascript:;" @click="handleSub(-1)">-</a> <input type="text" readonly :value="num" /> <a href="javascript:;" @click="handleSub(1)">+</a> </div> </div> </template> <script> // Third-party method useVModel to implement two-way binding import { useVModel } from '@vueuse/core' export default { name: 'XtxNumbox', props: { modelValue: { type: Number, default: 1 } }, setup(props, { emit }) { //The useVModel method receives three parameters, // Parameter 1: custom property props receives data passed by the parent component through v-model two-way binding // Parameter 2: data to be passed in props // Parameter 3: emit bound data needs to notify the parent component through the emit event const num = useVModel(props, 'modelValue', emit) const handleSub = n => { if (n < 0) { num.value -= 1 if (props.modelValue === 1) { num.value = 1 } } else { num.value += 1 } } return { handleSub, num } } } </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> use <XtxNumbox v-model="num">Quantity</XtxNumbox> Effect The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: MySQL learning tutorial clustered index
Table of contents 1. Retrieve the image 2. Create...
There are some problems with the compressed versi...
Introduction to Docker Docker is an open source a...
I encountered a problem when modifying the defaul...
The purpose of setting up MySQL query cache is: C...
Database read-write separation is an essential an...
First look at the code and effect↓ <style> ...
Overview MySQL also has its own event scheduler, ...
Table of contents 1. Use JavaScript to parse the ...
This article mainly introduces 6 solutions to the...
The table creation command requires: The name of...
Intersection Selector The intersection selector i...
Special symbols Named Entities Decimal encoding S...
XML/HTML CodeCopy content to clipboard < div s...
In addition to setting regulations for various ta...