JavaWeb(10)——前端综合案例4(购物车示例)

一、实例需求 ⌛

       购物车需要展示一个已加入购物车的商品列表,包含商品名称、商品单价、购买数量和操作 等信息,还需要实时显示购买的总价。其中购买数量可以增加或减少,每类商品还可以从购物车中移除。最终实现的效果大致如图所示。

基础版

JavaWeb(10)——前端综合案例4(购物车示例)_第1张图片

plus版 

JavaWeb(10)——前端综合案例4(购物车示例)_第2张图片

 JavaWeb(10)——前端综合案例4(购物车示例)_第3张图片

 

二、代码实现 ☕

        先在 index.html 中引入 Vue.js 和相关资源,创建一个根元素来挂载 Vue 实例:




    
    购物车示例
    


        注意,这里将 vue.min.js 和 index.js 文件写在的最底部,如果写在里,Vue 实例 将无法创建,因为此时 DOM 还没有被解析完成,除非通过异步或在事件 DOMContentLoaded(IE 是 onreadystatechange)触发时再创建 Vue 实例,这有点像 jQuery 的$(document).ready()方法。 

        本例需要用到 Vue.js 的 computed、methods 等选项,在 index.js 中先初始化实例:

var app = new Vue({ 
 el: '#app', 
 data: { 
 
 }, 
 computed: { 
 
 }, 
 methods: { 
 
 } 
});

        我们需要的数据比较简单,只有一个列表,里面包含了商品名称、单价、购买数量。在实际 业务中,这个列表应该是通过 Ajax 从服务端动态获取的,这里只做示例,所以直接写入在 data 选 项内,另外每个商品还应该有一个全局唯一的 id。我们在 data 内写入列表 list: 

data: {
        list: [
            {
                id: 1,
                name: 'iPhone 7',
                price: 6188,
                count: 1
            },
            {
                id: 2,
                name: 'iPad Pro',
                price: 5888,
                count: 1
            },
            {
                id: 3,
                name: 'MacBook Pro',
                price: 21488,
                count: 1
            }
        ]
    }

        数据构建好后,可以在 index.html 中展示列表了,毫无疑问,肯定会用到 v-for,不过在此之 前,我们先做一些小的优化。因为每个商品都是可以从购物车移除的,所以当列表为空时,在页面 中显示一个“购物车为空”的提示更为友好,我们可以通过判断数组 list 的长度来实现该功能: 

购物车为空