zoukankan      html  css  js  c++  java
  • vue--购物车案例(小知识点总结)

     Html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel="stylesheet" href="./main.css">
    
    </head>
    <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="(item,index) in books">
                        <td>{{item.id}}</td>
                        <td>{{item.name}}</td>
                        <td>{{item.data}}</td>
                        <!-- <td>{{getFinalPrice(item.price)}}</td> -->
                        <td>{{item.price| showPrice}}</td>
                        <td>
                            <button @click="inc(index)" :disabled="item.count <=1 ">-</button>
                            {{item.count}}
                            <button @click="add(index)">+</button>
                        </td>
                        <td><button @click="removeHandle(index)">移除</button></td>
                    </tr>
                </tbody>
            </table>
            <h2>总价格:{{totalPrice|showPrice}}</h2>
        </div>
        <h2 v-else>购物车为空</h2>
    </div>
    
    <body>
        <script src="../js/vue.js"></script>
        <script src="./main.js"></script>
    </body>
    
    </html>

    CSS

    table{
        border:1px solid #000;
        border-collapse: collapse;
        border-spacing: 0;
    }
    th,td{
    padding: 8px 16px;
    border:1px solid #000;
    text-align:left;
    }
    th{
        background-color: #f7f7f7;
        color:#5c6b77;
        font-weight:600px;
    }

    JavaScript

    const app = new Vue({
        el: '#app',
        data: () => ({
            books: [
                {
                    id: 1,
                    name: '《算法导论》',
                    data: "2018-09-25",
                    price: 89.00,
                    count: 1
                },
                {
                    id: 2,
                    name: '《UNIX编程艺术》',
                    data: "2018-09-25",
                    price: 89.00,
                    count: 1
                },
                {
                    id: 3,
                    name: '《编程珠玑》',
                    data: "2018-09-25",
                    price: 89.00,
                    count: 1
                },
                {
                    id: 4,
                    name: '《JavaScript高级算法》',
                    data: "2018-09-25",
                    price: 89.00,
                    count: 1
                },
                {
                    id: 5,
                    name: '《C++》',
                    data: "2018-09-25",
                    price: 89.00,
                    count: 1
                }
            ],
        }),
        computed: {
            totalPrice: function () {
                // 1、
                // let totalPrice = 0
                // for (let i = 0; i < this.books.length; i++) {
                //     totalPrice +=this.books[i].price * this.books[i].count
                // }
                // return totalPrice
    
                // 2、
                // let totalPrice = 0;
                // for (let i in this.books) {
                //     totalPrice += this.books[i].price * this.books[i].count
                // }
                // return totalPrice
    
                // 3、
                let totalPrice = 0
                for (let item of this.books) {
                    totalPrice += item.price * item.count
                }
                return totalPrice
            }
    
        },
        methods: {
            // getFinalPrice: (price) => {
            //     return '¥' + price.toFixed(2)
            // }
            add: function (index) {
                this.books[index].count++
            },
            inc: function (index) {
    
                this.books[index].count--
            },
            removeHandle: function (index) {
                this.books.splice(index, 1)
            }
        },
        filters: {
            showPrice: function (price) {
                return '¥' + price.toFixed(2)
            }
        }
    })

    注:文件文件位置

  • 相关阅读:
    bugfree3.0.1-修改“优先级”为中文引起的PHP Error
    【vue】vue单元测试:karma+mocha
    【node】node的核心模块---http模块,http的服务器和客户端
    【node】fs模块,文件和目录的操作
    【webpack】从零开始学webpack
    【vue】webpack插件svg-sprite-loader---实现自己的icon组件
    【vue】vue的路由权限管理
    【node】用koa搭建一个增删改服务(一)
    【小程序】小程序之发送模板消息
    【小程序】返回顶部wx.pageScrollTo和scroll-view的对比
  • 原文地址:https://www.cnblogs.com/DreamchaserHe/p/11738667.html
Copyright © 2011-2022 走看看