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 = thisthis.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;}}},
});

转载于:https://www.cnblogs.com/suRimn/p/10342209.html

vue实战记录(六)- vue实现购物车功能之地址列表选配相关推荐

  1. Vue实战快速上手-vue+ElementUI

    Vue实战快速上手-vue+ElementUI 前言 创建工程 安装依赖 使用 创建组件 配置路由 导入路由 展示 运行 问题 前言 ElementUI是饿了么的官方组件库,可以将vue和Elemen ...

  2. vue实战记录(二)- vue实现购物车功能之创建vue实例

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

  3. Vue实战(六)通用Table组件

    本文是Vue实战系列的第六篇文章,主要介绍Falcon项目中通用 Table 组件的开发和使用 .Falcon项目地址:https://github.com/thierryxing/Falcon 通用 ...

  4. Vue学习记录三 --- vue的项目实战

    一.常规项目配置安装: 1.安装vue-router路由: cmd下在当前项目目录下执行 : npm install vue-router --save-dev 如果因为依赖安装失败,则执行 : np ...

  5. 小程序云开发从前端到后台实战记录,开发一个完整功能的小程序

    小程序云开发从前端到后台,开发一个完整功能的小程序 一.编程基本知识要求 有vue 或wpf经验者很好理解 有mongodb经验者很好理解云后台 二.理解微信体系 微信有三个平台 1.开放平台 2.公 ...

  6. Vue实战项目开发--Vue中的动画特效

    项目的源代码在GitHub上:点击查看 目录 vue中的css动画原理 在Vue中使用Animate.css库 在Vue中同时使用过渡属性和动画 Vue中的Js动画与Velocity.js的结合 Vu ...

  7. 在线问题反馈模块实战(十六)​:实现查详情功能

  8. 【Vue实战】使用vue实现点击按钮,改变被点击按钮的样式。

    1. 实现思路 为每个按钮设置一个index: 为按钮设置点击事件 获取到按钮点击事件以后,判断index,进而动态修改按钮的class 2. 代码实现 2.1 代码 <template> ...

  9. Vue实战篇二十八:实现一个手机版的购物车

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

最新文章

  1. python--thread多线程总结
  2. [踏得网]HTML5在线教程阅读进度记录
  3. nginx反向代理和rewrite进行解决跨域问题、去掉url中的一部分字符串,通过nginx正则生成新的url...
  4. 二、lvm条带化的概念
  5. [力扣leetcode319]灯泡问题
  6. vs2010 利用DMP文件、pdb文件查找release下的异常行号的方法
  7. moment.js 快捷查询
  8. ARC122C-Calculator【乱搞,构造】
  9. linux gtk python,python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件
  10. 数据结构之线索化二叉树
  11. Live Meeting 音频视频使用端口设置
  12. 视频编解码质量评价---BDBR与BD-PSNR
  13. linux MySQL数据备份
  14. 《Spring Cloud微服务实战》翟永超(著)
  15. pc ps4手柄 驱动_《地平线:黎明时分》PC版性能表现分析
  16. Ubuntu更新显卡驱动与升级cuda版本“采坑“小记
  17. 随机效应模型介绍及实例分析
  18. 文件服务器 tmp文件夹,Linux管理临时文件tmpfiles
  19. 他看了几千份技术简历,愿意把技术简历的秘籍传授给你
  20. 用python制作田字格_2分钟学会在Word中制作田字格 米字格 书法练字再也不用买本子了...

热门文章

  1. 从PyUSB调用set_configuration时出现“未知错误”
  2. 英语教师计算机研修总结报告,英语教师研修总结范文(精选7篇)
  3. Cyber security和Network security的区别
  4. 【vs】如何去掉控制台
  5. MacBook 问题汇总
  6. 【知识蒸馏】Masked Generative Distillation
  7. html画圆圈原理,Html - 圆圈border
  8. 代数合并同类项计算机步骤,合并同类项的法则及步骤
  9. 说说自己喜欢的漫画吧
  10. 尚学堂shopping的经验