第五节 单件商品金额计算和单选全选功能

1.vue精髓在于操作data模型来改变dom,渲染页面,而不是直接去改变dom

2.加减改变总金额功能:

html:
<div class="cart-tab-3">
<div class="item-quantity">
<div class="select-self select-self-open">
<div class="quentity">
<a href="javascript:;" v-on:click="changeMoney(item,-1)">-</a>
<input type="text" v-model="item.productQuentity">
<!--双向数据绑定功能,实现总金额实时变化功能-->
<a href="javascript:;" @click="changeMoney(item,1)">+</a>
</div>
</div>
<div class="item-stock">有货</div>
</div>
</div>
<div class="cart-tab-4">
<!-- 总金额 -->
<div class="item-price-total">{{item.productPrice*item.productQuentity | formatMoney}}</div>
</div>
js:
methods:{
cartView: function () {
//....
},
changeMoney:function (product,way) {
if(way>0){
product.productQuentity++;
}else{
product.productQuentity--;
if(product.productQuentity<0){
product.productQuentity=1;
} } }
}
效果:

总金额57.00是实时计算的过程,一旦其中有一个变量变化,其他的也会实时进行变化,这也是vue十分方便的地方。

3.单选商品功能

html:

<a href="javascipt:;" class="item-check-btn" v-bind:class="{'check':item.checked}" @click="selctectedProduct(item)">
<!--class是object-->
js: selctectedProduct:function (item) {
if(typeof item.checked =='undefined'){
/*局部注册和全局注册item,vue无法监听undefined字段*/
//Vue.set(item,"checked",true);//全局注册
this.$set(item,"checked",true);//局部注册
}else{
item.checked = !item.checked;
} },

效果:

4.全选和全不选
html:
<div class="cart-foot-l">
<div class="item-all-check">
<a href="javascipt:;">
<span class="item-check-btn" :class="{'check':checkAllFlag}" @click="checkAll(true)">
<!--@click里可以写一元和三元表达式,但是不允许写复杂的业务逻辑如@click="checkAllFlag=true"-->
<svg class="icon icon-ok"><use xlink:href="#icon-ok"></use></svg>
</span>
<span>全选</span>
</a>
</div>
<div class="item-all-del">
<a href="javascipt:;" class="item-del-btn" @click="checkAll(false)">
取消全选
</a>
</div>
</div> js:
data:{
totalMoney:0,
productList:[],
checkAllFlag:false
/*初始值*/
}, checkAll:function (flag) {
this.checkAllFlag=flag;
var _this=this;
this.productList.forEach(function(item,index){
if(typeof item.checked =='undefined'){
_this.$set(item,"checked",_this.checkAllFlag);//局部注册
}else{
item.checked = _this.checkAllFlag;
}
}); }

效果:
 v-model具有数据双向绑定功能,单商品总金额是依赖productproductQuentity,会实时发生变化,而全部商品总金额,是个变量通过每次操作触发事件进行改变
5.删除单商品订单功能
html:
<a href="javascript:;" class="item-edit-btn" @click="delConfirm(item)"> <div class="md-modal modal-msg md-modal-transition" id="showModal" v-bind:class="{'md-show':delFlag}">
<div class="md-modal-inner">
<div class="md-top">
<button class="md-close" @click="delFlag=false">关闭</button>
</div>
<div class="md-content">
<div class="confirm-tips">
<p id="cusLanInfo">你确认删除此订单信息吗?</p>
</div>
<div class="btn-wrap col-2">
<button class="btn btn--m" id="btnModalConfirm" @click="delProduct()">Yes</button>
<button class="btn btn--m btn--red" id="btnModalCancel" @click="delFlag=false">No</button>
</div>
</div>
</div>
</div>
<div class="md-overlay" id="showOverLay" v-if="delFlag"></div> js:
delConfirm:function (item) {
this.delFlag=true;
this.carProduct=item;
},
delProduct:function () {
var index=this.productList.indexOf(this.carProduct);
this.productList.splice(index,1);
/*这里应该用http调用后台接口进行删除*/
/*然后v-for会实时重新渲染*/
this.delFlag=false;
}
 

VUE2.0实现购物车和地址选配功能学习第五节的更多相关文章

  1. VUE2.0实现购物车和地址选配功能学习第七节

    第七节 卡片选中,设置默认 1.卡片选中html:<li v-for="(item,index) in filterAddress" v-bind:class="{ ...

  2. VUE2.0实现购物车和地址选配功能学习第六节

    第六节 地址列表过滤和展开所有的地址 html:<li v-for="(item,index) in filterAddress">js: new Vue({ el:' ...

  3. VUE2.0实现购物车和地址选配功能学习第四节

    第四节 v-on实现金额动态计算 用¥金额 进行格式处理,可以使用原生js进行转换,但是在vuei,使用filter过滤器更加方便 注: 1.es6语法=>和import等 好处在于res参数后 ...

  4. VUE2.0实现购物车和地址选配功能学习第三节

    第三节 使用v-for渲染商品列表 1.使用vue-resource插件引入json数据 (注:在谷歌中调试打断点-- ,console还可以输出vm,res等属性列表,或者productList等一 ...

  5. VUE2.0实现购物车和地址选配功能学习第二节

    第二节 创建VUE实例 购物车项目计划: 1.创建一个vue实例 2.通过v-for指令渲染产品数据 3.使用filter对金额和图片进行格式化 4.使用v-on实现产品金额动态计算 5.综合演示 ① ...

  6. VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)

    第一节  vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便 ...

  7. 关于慕课网《使用vue2.0实现购物车和地址选配功能》的总结

    视频学习网址:http://www.imooc.com/learn/796 源码打包:https://codeload.github.com/fachaoshao/Vue-ShoppingCart/z ...

  8. vue2.0实现购物车功能

    购物车功能是一件比较繁琐的事情,逻辑功能太多,今天就用vue2.0实现一个简单的购物车功能,数据都本地自己写的假数据 功能列表: 1.全选和单选结算 2.减少和增加数量 3.商品的删除 界面搭建以及布 ...

  9. vue购物车和地址选配(三)

    参考资料:vue.js官网 项目演示: 项目源代码: 核心代码及踩坑 删除: new Vue({ el:'#app', data:{ productlist:[], totalMoney:0, che ...

随机推荐

  1. 【Xilinx-LVDS读写功能实现】-00-开始

    最近用到了一款LVDS接口的摄像头,640*480灰度图像,数据速率为600Mbps,位宽10bit,DDR双边沿采样. 实现数据的采集需要用到FPGA内的SERDES模块,现在已经仿真通过了,等到上 ...

  2. SqlParameter 使用

                SqlParameter[] param = new SqlParameter[]             {                 new SqlParameter ...

  3. PHP使用GD2库画图,图像无法输出解决方法

    在CS6编辑环境下,使用php的GD2库绘制图像,在浏览器上输出可能会出现图像无法输出的情况,目前发现两个解决方法:方法1:用记事本写,再另存为utf-8 no bom的格式. 方法2:在代码中添加o ...

  4. Javascript正则表达式完全学习手册

    正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...

  5. delphi bitbutton和speedbutton.button有什么区别

    http://zhidao.baidu.com/link?url=LT9_iwv47GfSp3m0MmUSablZrPOxzjKtqWW1yVMTbHnIs2DdCE-0qX2bwXZ2020x_Jl ...

  6. Strut、Spring、Hibernate如何实现资源整合(SSH)呢?

    Strut.Spring.Hibernate如何实现资源整合(SSH)呢? 其实很简单,我们从Spring与Hibernate的整合中可以看出来,由Spring的配置文件来管理Hiberbate的配置 ...

  7. 第一个shell脚本 结合计划任务下载远程文件

    思路: 进入/usr/local/apache2/htdocs/ipa/  循环读取 /root/shell/wget/down.txt  每次一行,每一行直接就是一条命令,直接 $line 就可以执 ...

  8. multipathd dead but pid file exists

    构建RAC环境时出现的错误 百度半天未找到解决方案,Google了一下,终于找到可行方案 Solution:- yum update device-mapper glibc -y [root@HE2 ...

  9. Flex timer使用 keydown事件注册到stage

    Flex timer使用 keydown事件注册到stage: <?xml version="1.0" encoding="utf-8"?> < ...

  10. S2SH框架整合(注解)Struts2+Spring+Hibernate+MySql

    整合简介 Struts2+Spring4+hibernate4整合,Maven管理jar包,Eclipse工具.注解方式 架构截图   1.Spring整合Hibernate 1.1.创建Hibern ...