vue购物车

这是一个使用Vue.js编写的示例,展示了如何在表格中实现全选功能,并实时计算选中商品的总价。通过v-model双向绑定,实现了checkbox状态与数据的同步,同时在计算属性中处理了总价的更新。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
</head>

<body>
    <div id="contend">
        <table>
            <thead>
                <th><input type="checkbox" v-model="allCheck"></th>
            </thead>
            <tbody>
                <tr v-for="(itme,index) in arr" :key="index">
                    <td><input type="checkbox" v-model="itme.state"></td>
                    <td>{{itme.name}}</td>
                    <td>{{itme.price}}</td>
                </tr>
            </tbody>
        </table>
        总价:{{allp}}
    </div>
</body>
<script>
    new Vue({
        el: '#contend',
        data: {
            arr: [
                {
                    name: '苹果',
                    price: '20',
                    state: false
                },
                {
                    name: '橘子',
                    price: '30',
                    state: false
                },
                {
                    name: '桃子',
                    price: '25',
                    state: false
                }
            ],
            allp: ''
        },
        computed: {
            allCheck: {
                get() {
                    let picke = 0
                    this.arr.forEach(item => {
                        if (item.state) {
                            picke += Number(item.price)
                        }
                        this.allp = picke
                    })
                    return this.arr.every((item) => item.state)
                },
                set(a) {
                    return this.arr.forEach(item => (item.state = a));
                }
            },
        }
    })
</script>

</html>

### Vue.js 购物车功能实现 以下是基于 Vue.js购物车功能的一个简单示例,它展示了如何通过组件化的方式管理商品列表以及购物车中的商品数量。 #### 商品数据模型 在 Vue 中可以定义一个简单的商品对象数组作为初始状态: ```javascript const products = [ { id: 1, name: '苹果', price: 0.99 }, { id: 2, name: '香蕉', price: 0.59 }, { id: 3, name: '橙子', price: 0.79 } ]; ``` #### 创建 Vue 组件结构 为了更好地组织代码,推荐将应用拆分为两个主要部分:`ProductList` 和 `ShoppingCart`。前者用于展示可购买的商品,后者则显示已选商品及其总价。 ##### ProductList.vue (商品列表) 此组件负责渲染产品列表并允许用户向购物车添加项目。 ```html <template> <div class="product-list"> <h3>商品列表</h3> <ul> <li v-for="item in productList" :key="item.id"> {{ item.name }} - ${{ item.price.toFixed(2) }} <button @click="addToCart(item)">加入购物车</button> </li> </ul> </div> </template> <script> export default { props: ['productList'], methods: { addToCart(product) { this.$emit('add-to-cart', product); } } }; </script> ``` ##### ShoppingCart.vue (购物车) 该组件接收来自父级的数据并通过计算属性得出总金额。 ```html <template> <div class="shopping-cart"> <h3>我的购物车</h3> <p v-if="cartItems.length === 0">您的购物车为空。</p> <ul v-else> <li v-for="(quantity, name) in cartSummary" :key="name"> {{ name }} × {{ quantity }} </li> </ul> <p>总计: ${{ totalCost.toFixed(2) }}</p> </div> </template> <script> export default { props: ['cartItems'], computed: { cartSummary() { return this.cartItems.reduce((acc, curr) => { acc[curr.name] = (acc[curr.name] || 0) + 1; return acc; }, {}); }, totalCost() { return this.cartItems.reduce( (total, current) => total + current.price, 0 ); } } }; </script> ``` #### 主应用程序逻辑 App.vue 最后,在主文件中组合这些组件,并维护共享的状态。 ```html <template> <div id="app"> <ProductList :productList="products" @add-to-cart="addItemToCart" /> <ShoppingCart :cartItems="cart" /> </div> </template> <script> import ProductList from './components/ProductList.vue'; import ShoppingCart from './components/ShoppingCart.vue'; export default { components: { ProductList, ShoppingCart }, data() { return { products: [ { id: 1, name: '苹果', price: 0.99 }, { id: 2, name: '香蕉', price: 0.59 }, { id: 3, name: '橙子', price: 0.79 } ], cart: [] }; }, methods: { addItemToCart(selectedItem) { const existingIndex = this.cart.findIndex( (item) => item.id === selectedItem.id ); if (existingIndex >= 0) { // 如果已经存在,则更新价格或其他字段(如果需要) } else { this.cart.push({ ...selectedItem }); } } } }; </script> ``` 以上是一个基础版本的 Vue.js 购物车实现[^1]。可以根据实际需求扩展更多特性,比如持久化存储、删除物品等功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值