• vue:实现图书购物车


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>图书购物车</title>
        <script src="vue/vue.js"></script>
        <style>
            table {
                border: 1px solid #e9e9e9;
                border-collapse: collapse;
                border-spacing: 0;
            }
    
            th, td {
                padding: 0px 16px;
                border: 1px solid #e9e9e9;
                text-align: left;
            }
    
            th {
                background-color: #f7f7f7;
                color: #5c6b77;
                font-weight: 600;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <div v-if="books.length">
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th>书籍名称</th>
                            <th>出版日期</th>
                            <th>价格</th>
                            <th>购买数量</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr v-for="(b, index) in books">
                            <td>{{b.id}}</td>
                            <td>{{b.name}}</td>
                            <td>{{b.date}}</td>
                            <td>{{b.price | showPrice}}</td>
                            <td>
                                <button :disabled="b.count <= 0" @click="decrement(index)">-</button>
                                {{b.count}}
                                <button @click="increment(index)">+</button>
                            </td>
                            <td><button @click="removeHandle(index)">移除</button></td>
                        </tr>
                    </tbody>
                </table>
                <h2>总价格: {{totalPrice}}</h2>
            </div>
            <h2 v-else>购物车为空</h2>
        </div>
        <script>
            const app = new Vue({
                el: "#app",
                data: {
                    books: [
                        {
                            id: 1,
                            name: "《算法导论》",
                            date: "2006-9",
                            price: 85.00,
                            count: 0
                        },
                        {
                            id: 2,
                            name: "《UNIX编程艺术》",
                            date: "2006-2",
                            price: 59.00,
                            count: 0
                        },
                        {
                            id: 3,
                            name: "《编程珠玑》",
                            date: "2008-10",
                            price: 39.00,
                            count: 0
                        },
                        {
                            id: 4,
                            name: "《算法导论》",
                            date: "2006-9",
                            price: 85.00,
                            count: 0
                        },
                    ]
                },
    
                methods: {
                    increment(index) {
                        this.books[index].count += 1;
                    },
                    decrement(index) {
                        this.books[index].count -= 1;
                    },
                    removeHandle(index) {
                        this.books.splice(index, 1);
                    }
                },
                computed: {
                    totalPrice() {
                       /* let totalPrice = 0;
                        for (let i = 0; i<this.books.length; i++) {
                            totalPrice += this.books[i].price * this.books[i].count;
                        }
                        return totalPrice*/
                        // 使用高阶函数reduce
                        return this.books.reduce((prev, book) => prev + book.price * books.count,0)
                    }
                },
                filters: {
                    showPrice(price) {
                        return "¥" + price.toFixed(2);
                    }
                }
            })
        </script>
    </body>
    </html>
    
  • 相关阅读:
    Linux(Debian、Ubuntu、Deepin等)安装最新版Chrome Unstable
    JavaScript根据经纬度获取距离信息
    CSS滚动条样式定制
    Linux下 Apache Vhost 配置 防止403
    Unity减小安装包的体积(210MB减小到7MB)
    Ubuntu17.04配置LNMP(Nginx+PHP7+MySQL)简单教程 快速 易学 简单易懂
    Yii2项目实现Markdown功能 在线Markdown编辑器
    Gradle全局代理配置
    Angular4.0从入门到实战打造在线竞拍网站学习笔记之三依赖注入
    Python使用PyMysql操作数据库
  • 原文地址:https://www.cnblogs.com/qjuly/p/13377628.html
Copyright © 2020-2023  润新知