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 相关文章推荐
静态的动态续篇之来点XML
Dec 23 Javascript
从JavaScript的函数重名看其初始化方式
Mar 08 Javascript
JS面向对象编程浅析
Aug 28 Javascript
javascript中的变量作用域以及变量提升详细介绍
Oct 24 Javascript
js转义字符介绍
Nov 05 Javascript
使用jQueryMobile实现滑动翻页效果的方法
Feb 04 Javascript
Javascript实现字数统计
Jul 03 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
vue 的keep-alive缓存功能的实现
Mar 22 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
mock.js模拟前后台交互
Jul 25 Javascript
JS实现百度搜索框
Feb 25 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP 递归效率分析
2009/11/24 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
js异步加载的三种解决方案
2013/03/04 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JavaScript中的this机制
2016/01/30 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
python绘制条形图方法代码详解
2017/12/19 Python
Python3数字求和的实例
2019/02/19 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
机关门卫岗位职责
2013/12/30 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
小学生学习保证书
2015/02/26 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang