Vue实现购物车功能


Posted in Javascript onApril 27, 2017

效果图:

Vue实现购物车功能

代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.0.2/css/bootstrap.min.css" rel="external nofollow" />
</head>
<body>

  <div id="app" class="container">
    <table class="table">
      <thead>
        <tr>
          <th>产品编号</th>
          <th>产品名字</th>
          <th>购买数量</th>
          <th>产品单价</th>
          <th>产品总价</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item , index) in message">
          <td @click="jia(index)">{{item.id}}</td>
          <td>{{item.name}}</td>
          <td>
            <button type="button" class="btn tn-primary" @click="subtract(index)">-</button>
            <input type="text" v-model="item.quantity">
            <button type="button" class="btn tn-primary" @click="add(index)">+</button>
          </td>
          <td>{{item.price | filtermoney}}</td>
          <!--<td>{{arr[index].one}}</td>-->
          <td>{{item.price*item.quantity | filtermoney}}</td>
          <td>
            <button type="button" class="btn btn-danger" @click="remove(index)">移除</button>
          </td>
        </tr>
        <tr>
          <td>总购买价  
          </td>
          <td>
            {{animatenum | filtermoney}}
          </td>
          <td>总购买数量
          </td>
          <td>

          </td>
          <td colspan="2">
            <button type="button" class="btn btn-danger" @click="empty()">清空购物车</button>
          </td>
        </tr>
      </tbody>
    </table>

    <p v-if="message.length===0">您的购物车为空</p>
  </div>
  <script src="https://unpkg.com/tween.js@16.3.4"></script>
  <script src="https://cdn.bootcss.com/vue/2.2.3/vue.min.js"></script>
  <script>
   var vm=new Vue({
   el:"#app",
   data:{
    totalPrice:0,
    animatenum:0,
    message:[
    {
        id: 007,
        name: 'iphone5s',
        quantity: 3,
        price: 4000
     },{
        id: 1340,
        name: 'iphone5',
        quantity: 9,
        price: 3000
     },{
        id: 7758,
        name: 'imac',
        quantity: 4,
        price: 7000
     },{
        id: 2017,
        name: 'ipad',
        quantity: 5,
        price: 6000
      }
    ]
   },
   watch:{
    toComput2:function(newValue,oldValue){
    this.tween(newValue,oldValue);
    }
   },
   computed:{
    //计算总金额
    toComput2:function(){
    var vm=this;
    //每次进来要重置总金额
    vm.totalPrice=0;
    this.message.forEach(function(mess){
     vm.totalPrice+=parseInt(mess.price*mess.quantity);
    })
    return this.totalPrice;
    }
   },
   filters:{
    filtermoney:function(value){
    return '¥'+value ;
    }
   },
   mounted:function(){ 
    this.tween('97000','0');
   },
   methods:{
    //计算总数的方法为什么写在methods里面就不行?
    toComput:function(){
    var vm=this;
    vm.message.forEach(function(mess){
     vm.totalPrice+=parseInt(mess.price*mess.quantity);
    })
   return vm.totalPrice;
    },
    add:function(index){
    var vm=this;
    vm.message[index].quantity++;
    },
    subtract:function(index){
    var vm=this;
    vm.message[index].quantity--;
    if(vm.message[index].quantity<=0){
     if (confirm("你确定移除该商品?")) { 
        vm.message.splice(index,1)
      } 
    }

    },
    remove:function(index){
    var vm=this;
    if (confirm("你确定移除该商品?")) { 
        vm.message.splice(index,1)
      } 
    },
    empty:function(){
    var vm=this;
    vm.message.splice(0,vm.message.length);
    },
    jia:function(index){
    var vm=this;
    vm.arr[index].one++;
    },
    tween:function(newValue,oldValue){
   var vm=this;
   var twen=new TWEEN.Tween({animatenum:oldValue});
   function animate() {
     requestAnimationFrame(animate);  
     TWEEN.update(); 
   };
   twen.to({animatenum:newValue},750);
   twen.onUpdate(function(){
   //toFixed();保留几位小数
   vm.animatenum = this.animatenum.toFixed();
   })
   twen.start();
   animate();
  }
   }
   });

  </script> 
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
document.documentElement和document.body区别介绍
Sep 16 Javascript
深入理解JavaScript是如何实现继承的
Dec 12 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
May 13 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
Dec 06 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 Javascript
vue-router 2.0 跳转之router.push()用法说明
Aug 12 Javascript
vue 如何使用递归组件
Oct 23 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
Apr 27 #Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 #Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 #Javascript
微信小程序 wx:for的使用实例详解
Apr 27 #Javascript
微信小程序 动态传参实例详解
Apr 27 #Javascript
微信小程序 本地数据读取实例
Apr 27 #Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 #Javascript
You might like
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
Django 中 cookie的使用
2017/08/17 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
基于element-ui的rules中正则表达式
2018/09/04 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
如何写出好的Java代码
2014/04/25 面试题
库房管理员岗位职责
2014/03/09 职场文书
自主招生推荐信范文
2014/05/10 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
Python绘制地图神器folium的新人入门指南
2021/05/23 Python