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
Solve the problem of not being able to access the...
Preface Merging or splitting by specified charact...
What is a directive? Both Angular and Vue have th...
html <!DOCTYPE html> <html lang="en...
Table of contents 1. Basic configuration of Nginx...
As a newbie who has just come into contact with t...
Preface: When using MySQL, you may encounter time...
width: auto The child element (including content+...
See: https://www.jb51.net/article/112612.htm Chec...
Table of contents introduce start Install ① Direc...
This may be an issue that is easily overlooked. F...
This article shares the specific code of React to...
Table of contents The server runs jupyter noteboo...
Table of contents 1. Write Webshell into outfile ...
Execute the command to install the plugin postcss...