vue实战记录(六)- vue实现购物车功能之地址列表选配
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据
作者:狐狸家的鱼
本文链接:vue实战-实现购物车功能(六)
GitHub:sueRimn

主要实现地址页面的适配和设置地址默认与删除,以及更多显示的状态取反。
address.html
<!-- address list -->
<div class="checkout-title">
<span>配送地址</span>
</div>
<div class="addr-list-wrap">
<div class="addr-list">
<ul>
<li v-for="(item, index) in filterAddress" :key="index" :class="{'check':index==currentIndex}" @click="currentIndex=index">
<dl>
<dt v-cloak>{{item.userName}}</dt>
<dd class="address" v-cloak>{{item.streetName}}</dd>
<dd class="tel" v-cloak>{{item.tel}}</dd>
</dl>
<div class="addr-opration addr-edit">
<a href="javascript:;" class="addr-edit-btn" @click="editAddress(item.addressId)">
<svg class="icon icon-edit"><use xlink:href="#icon-edit"></use></svg>
</a>
</div>
<div class="addr-opration addr-del">
<a href="javascript:;" class="addr-del-btn" @click="delConfirm(item)">
<svg class="icon icon-del"><use xlink:href="#icon-del"></use></svg>
</a>
</div>
<div class="addr-opration addr-set-default">
<a href="javascript:;" class="addr-set-default-btn" v-if="!item.isDefault" @click="setDefault(item.addressId)"><i>设为默认</i></a>
</div>
<div class="addr-opration addr-default" v-if="item.isDefault">默认地址</div>
</li>
<li class="addr-new">
<div class="add-new-inner">
<i class="icon-add">
<svg class="icon icon-add"><use xlink:href="#icon-add"></use></svg>
</i>
<p >添加新地址</p>
</div>
</li>
</ul>
</div>
<div class="shipping-addr-more">
<a class="addr-more-btn up-down-btn" href="javascript:" @click="loadMore">
more
<i class="i-up-down">
<i class="i-up-down-l"></i>
<i class="i-up-down-r"></i>
</i>
</a>
</div>
</div>
<!-- shipping method-->
<div class="checkout-title">
<span>配送方式</span>
</div>
<div class="shipping-method-wrap">
<div class="shipping-method">
<ul>
<li>
<div class="name">标准配送</div>
<div class="price">Free</div>
</li>
<li>
<div class="name">高级配送</div>
<div class="price">180</div>
</li>
</ul>
</div>
</div>
<div class="next-btn-wrap">
<a href="javascript:;" class="btn btn--red">下一步</a>
</div>
<div class="md-modal modal-msg md-modal-transition" id="showModal" :class="{'md-show': delStatus}">
<div class="md-modal-inner">
<div class="md-top">
<button class="md-close">关闭</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="delAddress">Yes</button>
<button class="btn btn--m btn--red" id="btnModalCancel" @click="delStatus=false">No</button>
</div>
</div>
</div>
</div>
<div class="md-modal modal-msg md-modal-transition" id="showModal" :class="{'md-show': insFlag}">
<div class="md-modal-inner">
<div class="md-top">
<button class="md-close">关闭</button>
</div>
<div class="md-content">
<div class="confirm-tips">
<div class="md-form-item">
<label class="md-form-item__label" style="width: 80px;">
姓名
</label>
<div class="md-form-item__content" style="margin-left: 80px;">
<div class="el-input">
<input type="text" autocomplete="off" class="md-input__inner">
</div>
</div>
</div>
<div class="md-form-item">
<label class="md-form-item__label" style="width: 80px;">
地址
</label>
<div class="md-form-item__content" style="margin-left: 80px;">
<div class="el-input">
<input type="text" autocomplete="off" class="md-input__inner">
</div>
</div>
</div>
<div class="md-form-item">
<label class="md-form-item__label" style="width: 80px;">
电话号码
</label>
<div class="md-form-item__content" style="margin-left: 80px;">
<div class="el-input">
<input type="text" autocomplete="off" class="md-input__inner">
</div>
</div>
</div>
</div>
<div class="btn-wrap col-2">
<button class="btn btn--s" id="btnModalConfirms" @click="saveFrom">保存</button>
<button class="btn btn--s btn--red" id="btnModalCancels">取消</button>
</div>
</div>
</div>
</div>
<div class="md-overlay" id="showOverLay" v-show="insFlag"></div>
</div>
</div>
</div>
new Vue({
el:'.container',
data:{
limitNum: 3,//限制显示的数量
addressList: [],//地址列表
currentIndex:'',//当前项
delStatus: false,
insFlag: false,
curAddress:" ",
name: '',
streetName:'',
phone:'',
fromStatus: '' ,
checkIndex: ''
},
mounted: function() {
this.$nextTick(function() {
this.getAddressList();
});
},
computed: {//数据过滤
filterAddress: function () {
return this.addressList.slice(0,this.limitNum);//截取0-3个地址显示 返回一个全新数组
}
},
methods: {
getAddressList: function () {
this.$http.get("data/address.json").then(response => {//获取后台数据
let res = response.data;
if (res.status == '0') {//这里不能写成===
this.addressList = res.result;
}
})
},
loadMore: function () {//显示更多 控制显示的两种状态
//this.limitNum = this.addressList.length;//展示地址数组全部数据
let len = this.addressList.length;
if (this.limitNum === len){
this.limitNum = 3;
}else{
this.limitNum = len;
}
},
setDefault: function (addressId) {
this.addressList.forEach((address, index) => {
if (address.addressId == addressId) {
address.isDefault = true;
}else{
address.isDefault = false;
}
})
},
delConfirm: function(item) {
this.delStatus = true;
this.curAddress = item;
},
delAddress: function () {
var index = this.addressList.indexOf(this.curAddress);
this.addressList.splice(index, 1)
this.delStatus = false;
},
insConfirm: function(item) {
this.insFlag = true;
this.curAddress = item;
},
addAddress: function (item) {
this.fromStatus = 0;
var a = this.addressList[this.addressList.length-1];
// alert(a.addressId++)
this.addressList.push({
addressId: a.addressId++,
userName: this.name,
streetName: this.streetName,
tel: this.phone
});
this.limitNum = this.addressList.length;
this.insFlag = false;
},
editAddress: function (addressId) {
this.fromStatus = 1;
this.insFlag = true;
var _this = this
this.addressList.forEach(function (address,index) {
if (address.addressId == addressId) {
_this.name = address.userName;
_this.phone = address.tel;
_this.streetName = address.streetName;
_this.checkIndex = index;
}
})
},
saveFrom: function () {
if(this.fromStatus == 0){
this.addAddress();
}
if(this.fromStatus == 1) {
// alert(this.checkIndex);
this.addressList.splice(this.checkIndex, 1, {
addressId: this.addressId,
userName: this.name,
streetName: this.streetName,
tel: this.phone
});
this.editAddress();
this.insFlag = false;
}
}
},
});
vue实战记录(六)- vue实现购物车功能之地址列表选配的更多相关文章
- vue实战(一):利用vue与ajax实现增删改查
vue实战(一):利用vue与ajax实现增删改查: <%@ page pageEncoding="UTF-8" language="java" %> ...
- vue实战记录(五)- vue实现购物车功能之商品总金额计算和单选全选删除功能
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(五) GitHub:sue ...
- vue实战记录(四)- vue实现购物车功能之过滤器的使用
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(四) GitHub:sue ...
- vue实战记录(三)- vue实现购物车功能之渲染商品列表
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(三) GitHub:sue ...
- vue实战记录(二)- vue实现购物车功能之创建vue实例
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...
- vue实战记录(一)- vue实现购物车功能之前提准备
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(一) GitHub:sue ...
- vue学习记录:vue引入,validator验证,数据信息,vuex数据共享
最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <temp ...
- Vue学习记录-初探Vue
写在开头 2017年,部门项目太多,而且出现了一个现象,即:希望既要有APP,也能够直接扫码使用,也能放到微信公众号里面. 从技术角度来说,APP我们可以选择原生开发,也可以选择ReactNative ...
- python UI自动化实战记录六:页面1用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
随机推荐
- Android开发,关于如何在应用间共享SharedPreference
开发一个应用,需要用到两个应用A和B之间共享数据的问题,这个数据是个单一的数据,所以就想用SharedPrefernce来进行保存. 使用网上的各种应用间的共享代码,B是读取A的数据,所以代码为: C ...
- 或许,挂掉的点总是出人意料(hw其实蛮有好感的公司)
1:问了有没有考研的打算,为什么: ` 实验室指导自己的两个学长, 他们两个都是不考研党派,当然两个学长本科都进入了不错的公司hw,xm,耳濡目染就自己也就不想去考研了: 跟一些已经工作的程序员聊天, ...
- SQL Server GUID 数据迁移至MongoDB后怎样查看?
关键字:SQL Server NEWID():BSON:MongoDB UUID 1.遇到的问题和困惑 SQL Server中的NEWID数据存储到MongoDB中会是什么样子呢?发现不能简单的通过此 ...
- 实现MongoDB读写分离的“读偏好”介绍
在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...
- [20190401]隐含参数_mutex_spin_count.txt
[20190401]隐含参数_mutex_spin_count.txt --//上午做了一些测试关于semtimedop函数调用,发现自己上个星期在一些问题上理解错误.--//相关链接:--//htt ...
- mssql sqlserver 快速表备份和表还原的方法
摘要: 在sqlserver维护中,我们偶尔需要运行一些sql脚本对数据进行相关修改操作,在数据修改前我们必须对表数据进行备份来避免出现异常时,可以快速修复数据, 下文讲述sqlserver维护中,快 ...
- AnyDesk远程连接及异常处理
远程协助工具,用得最普遍的非QQ莫属,毕竟用户量在这里摆着的.不过,用户体验效果还不太理想,你懂得.接下来分享两个工具,一个是TeamViewer,另一个是AnyDesk.你更倾向于哪一款呢? 一.T ...
- 我的第一个python web开发框架(23)——代码版本控制管理与接口文档
书接上一回,小白和老菜聊到代码的版本控制和接口文档 小白:为什么要做版本控制,我不弄版本控制不也完成了项目了吗?要做版本控制不是很麻烦,又要安装服务又要提交代码,代码又不是多人用开发,还要写文档... ...
- JavaScript作用域链的理解
前言 作用域是JavaScript一个很重要的概念,想要学好JavaScript就需要理解javascript作用域和作用域链的工作原理.这篇文章对JavaScript作用域链和作用域链做一个简单的介 ...
- Linux Collection:用户管理
adduser 添加(新建)用户账户 $ sudo adduser username groups 添加组 $ groups username # 查看用户已有的组 $ groups username ...