使用vue2实现购物车和地址选配功能


Posted in Javascript onMarch 29, 2018

首先,vue基础js写法

new Vue({
  el:"#app",
  //模型
  data:{
  },
  filters:{
  },
  mounted:function(){
    this.$nextTick(function(){
    //初始化调用
    });
  },
  computed:{
    //实时计算
  },
  methods:{
  }
});

v-for

<li v-for="(item,index) in productList">
  <div class="item-name">{{item.productName}}</div>
</li>

v-model

(实时更新)

<input type="text" value="0" disabled v-model="item.productQuantity">
<div class="item-price-total">{{item.productQuantity}}</div>

v-bind

<a href="javascript:;" class="item-check-btn" v-bind:class="{'check':item.checked}">
<!--可通过更改item.checked的值设置是否选中-->
<!--必须用v-bind 不可直接在class里面直接使用{{}}-->
<!--v-bind:class= 可简写为 :class= -->

filters过滤器的使用

1.html引用方式

<div class="item-price">{{item.productPrice | money('元')}}</div>

2.过滤器

filters:{
  formatMoney:function(value,type){
    return "¥"+value.toFixed(2)+ type;
  }
},

3.全局过滤器(写在new Vue的外面)

Vue.filter("money",function(value,type){
  return "¥"+value.toFixed(2) + type; //保留两位小数 结果eg:¥19.00元
});

调用methods中的方法:

@click="method(param)"
//或者
@click="delFlag=false"
@click="limitNum=addressList.length"

computed 实时计算

如下:默认显示三条数据,点击more 显示所有

<li v-for="(item,index) in filterAddress">
<div class="shipping-addr-more">
<a class="addr-more-btn up-down-btn" href="javascript:" @click="limitNum=addressList.length">
  more
  <i class="i-up-down">
   <i class="i-up-down-l"></i>
   <i class="i-up-down-r"></i>
  </i>
 </a>
</div>

data:{
    limitNum:3
  },
computed:{
  filterAddress:function(){
    return this.addressList.slice(0,this.limitNum);
  }
},

先提出一两个经典的实例

1.以下实现了对循环卡片的点击 选中

<li v-for="(item,index) in filterAddress" v-bind:class="{'check':index==currentIndex}" 
@click="currentIndex=index">
<!--其中currentIndex在js里需要定义-->

2.以下实现了对固定卡片的点击 选中

<ul>
  <li v-bind:class="{'check':shippingMethod==1}" @click="shippingMethod=1">
   <div class="name">标准配送</div>
   <div class="price">Free</div>
  </li >
  <li v-bind:class="{'check':shippingMethod==2}" @click="shippingMethod=2">
   <div class="name">高级配送</div>
   <div class="price">180</div>
  </li>
 </ul>
 <!--其中shippingMethod在js里需要定义-->

题外话:由于本人小白,学一点是一点,额外记录一下辅助弹出框 遮罩层的写法

<div class="md-overlay" v-if="delFlag"></div>

vue2的js语法 贴几个 方便查用

1.调用后端方法

var _this = this;
this.$http.get("data/address.json").then(function(response){
    _this.addressList = response; //这里不能直接用this 此this非彼this 所以只能声明_this
}); 
//以下为ES6写法,就可以直接用this了
let _this = this;  //没用,就放这看看~
this.$http.get("data/cartData.json",{"id":123}).then(res=>{
  this.productList = res.data.result.list;
});

2.forEach循环

this.productList.forEach(function(item,index){
  if(typeof item.checked == 'undefined'){ 
  //如果item中没有checked属性 在item对象中添加checked属性,值为true
    _this.$set(item,"checked",true);//局部注册
    Vue.set(item,"checked",true);//全局注册
  }
});

附上链接:码云地址vue2_study

总结

以上所述是小编给大家介绍的使用vue2实现购物车和地址选配功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 学习之旅 (2)
Feb 05 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
jQuery Mobile中的button按钮组件基础使用教程
May 23 Javascript
基于jQuery实现的查看全文功能【实用】
Dec 11 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
javascript实现延时显示提示框效果
Jun 01 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
vue axios请求拦截实例代码
Mar 29 #Javascript
JavaScript面试出现频繁的一些易错点整理
Mar 29 #Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 #jQuery
详解Javascript中new()到底做了些什么?
Mar 29 #Javascript
Koa2 之文件上传下载的示例代码
Mar 29 #Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 #Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 #Javascript
You might like
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
python openssl模块安装及用法
2020/12/06 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
美德好少年主要事迹
2014/01/29 职场文书
学校火灾防控方案
2014/06/09 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP