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 () {
            // let totalPrice = 0
            // for (let i = 0; i < this.books.length; i++) {
            //     totalPrice +=this.books[i].price * this.books[i].count
            // }
            // return totalPrice

            let totalPrice = 0;
            for (let i in this.books) {
                totalPrice += this.books[i].price * this.books[i].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)
        }
    }
})

注:文件文件位置

猜你喜欢

转载自www.cnblogs.com/DreamchaserHe/p/11738667.html