Vue简易购物车实例

vue是前端轻量级MVVM框架,门槛相对较低,今天就用Vue做一个简易版本的购物车实例,我写的是vue2的形式,发表该文章以便记录

一.vue.js官网下载:安装 — Vue.js 

二.这里我使用的是直接引入的一个vue.js

 三.原理分析和实现

引入vue.js

<script src="js/vue.js"></script>

实例源码

HTML部分

 <div id="app">
         <form action="#" method="post">
             <table border="1" style="width: 450px;text-align: center">
                 <tr>
                     <td style="width: 8%">
                         <input type="checkbox" v-model="isChecked">
                     </td>
                     <td style="width: 30%">产品名称</td>
                     <td style="width: 20%">产品单价</td>
                     <td style="width: 20%">产品数量</td>
                     <td style="width: 30%">金额</td>
                 </tr>
                 <tr v-for="(item,index) in lists " :key="index">
                     <td>
                         <input type="checkbox" v-model="item.isCheck">
                     </td>
                     <td>{{item.name}}</td>
                     <td >{{item.price}}</td>
                     <td>
                         <input type="number" min="0"  v-model="item.num" style="width: 40px">
                     </td>
                 <td style="color: red;font-weight: bold">
                     ¥{{(item.price*item.num).toFixed(2)}}
                 </td>
                 </tr>
                 <tr>
                     <td colspan="5" style="text-align: left;color: red;font-weight: bold ;text-align: center" >
                         总价:    ¥{{getTotal }}
                     </td>
                 </tr>

             </table>
         </form>
     </div>

准备下列数据

lists:[
                         {
                             isCheck:false,
                             name:"钢笔",
                             price:2.52,
                             num:2
                         },
                         {
                             isCheck:false,
                             name:"毛笔",
                             price:3.5,
                             num:0
                         },
                         {
                             isCheck:false,
                             name:"雨伞",
                             price:15.6,
                             num:1
                         },
                         {
                             isCheck:false,
                             name:"辣条",
                             price:0.5,
                             num:0
                         },
                         {
                             isCheck:false,
                             name:"宋轶的签名照",
                             price:200,
                             num:2
                         }
                      ]

完整实例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>偷故事的鸭</title>
  <script src="js/vue.js"></script>
</head>
<body>

     <div id="app">
         <form action="#" method="post">
             <table border="1" style="width: 450px;text-align: center">
                 <tr>
                     <td style="width: 8%">
                         <input type="checkbox" v-model="isChecked">
                     </td>
                     <td style="width: 30%">产品名称</td>
                     <td style="width: 20%">产品单价</td>
                     <td style="width: 20%">产品数量</td>
                     <td style="width: 30%">金额</td>
                 </tr>
                 <tr v-for="(item,index) in lists " :key="index">
                     <td>
                         <input type="checkbox" v-model="item.isCheck">
                     </td>
                     <td>{{item.name}}</td>
                     <td >{{item.price}}</td>
                     <td>
                         <input type="number" min="0"  v-model="item.num" style="width: 40px">
                     </td>
                 <td style="color: red;font-weight: bold">
                     ¥{{(item.price*item.num).toFixed(2)}}
                 </td>
                 </tr>
                 <tr>
                     <td colspan="5" style="text-align: left;color: red;font-weight: bold ;text-align: center" >
                         总价:    ¥{{getTotal }}
                     </td>
                 </tr>

             </table>
         </form>
     </div>

     <script>
         const  vm=new  Vue({
             el:"#app",
             data(){
                 return{
                     lists:[
                         {
                             isCheck:false,
                             name:"钢笔",
                             price:2.52,
                             num:2
                         },
                         {
                             isCheck:false,
                             name:"毛笔",
                             price:3.5,
                             num:0
                         },
                         {
                             isCheck:false,
                             name:"雨伞",
                             price:15.6,
                             num:1
                         },
                         {
                             isCheck:false,
                             name:"辣条",
                             price:0.5,
                             num:0
                         },
                         {
                             isCheck:false,
                             name:"宋轶的签名照",
                             price:200,
                             num:2
                         }
                      ]
                 }
             },
             computed:{
                 //计算总价格
                 getTotal(){
                    // 获取lists中isCheck为true的数据
                     let _listsCheck=this.lists.filter(function (val){
                         return val.isCheck===true;
                     })
                     //总价
                     let totalPrice=0

                     for (let i = 0; i < _listsCheck.length; i++) {  //循环获取lists中isCheck为true的数据
                         totalPrice+=_listsCheck[i].num*_listsCheck[i].price//将对应isCheck为true的数量与价格相乘得出总价
                     }
                     return totalPrice.toFixed(2);  //总价保留2为小数
                 },
                 isChecked:{
                     get(){
                         let flag=true;
                         //读取的时候触发
                         this.lists.forEach(el=>{  //迭代lists中为isCheck
                             if(el.isCheck==false){  //当子选项有一个为false时,则全选设置为false
                                 flag=false;
                             }
                         })
                         return flag;
                     },
                     set(val) //当isChecked被赋值的时候会触发这个set方法
                     {
                         if(val) //判断如果全选被选中,则其他的子选项全部选中,如果全选被取消,则其他的所有子选项取消选中
                         {
                             this.lists.map(el=>el.isCheck=true);
                         }else
                         {
                             this.lists.map(el=>el.isCheck=false);
                         }
                     }
                 }
             }
         })
     </script>
</body>
</html>

效果图:

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 2购物的完整实现包括以下几个关键步骤: 1. 创建Vue实例:使用Vue框架创建一个新的Vue实例,作为整个应用的根组件。 2. 数据管理:在Vue实例中定义数据属性,用于存储购物中的商品列表、商品数量、总价等信息。 3. 商品列表展示:在页面上展示商品列表,可以使用v-for指令遍历商品数组,并显示每个商品的名称、价格等信息。 4. 添加商品到购物:为每个商品添加一个“添加到购物”按钮,并绑定点击事件。在事件处理函数中,将选中的商品添加到购物数据中,并更新总价。 5. 修改商品数量:为每个商品在购物中绑定一个输入框,用于修改商品数量。对输入框绑定一个change事件,在事件处理函数中更新对应商品的数量,并计算新的总价。 6. 删除商品:为每个商品在购物中添加一个“删除”按钮,并绑定点击事件。在事件处理函数中,从购物数据中移除对应的商品,并更新总价。 7. 结算功能:添加一个“结算”按钮,并绑定点击事件。在事件处理函数中,可以进行一些结算逻辑,例如生成订单、清空购物等操作。 8. 样式美化:使用CSS样式对购物页面进行美化,使其更加符合用户体验和界面设计需求。 需要注意的是,上述实现仅是一个基本的购物功能,你可以根据具体需求进行扩展和优化,例如加入购物数量限制、价格计算规则、登录验证等功能。同时,也可以通过与后端API进行数据交互,实现购物数据的持久化和同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷故事的鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值