1 address.html
购物车 - 地址确认
- 地址确认
- 查看订单
- 支付
- 订单确认
配送地址
- for="(item, index) in filterAddress" @click="currentIndex = index" :class="{'check':currentIndex == index}">
- {{item.userName}}
- {{item.streetName}}
- {{item.tel}}
if="!item.isDefault"> @click="setDefault(index)">设为默认if="item.isDefault">默认地址添加新地址
配送方式
标准配送Free 高级配送180
2 address.js
let vmAddress = new Vue({ el: '.container', data: { limitNum: 3, //限制地址列表显示的长度 addressList: [], currentIndex: 0, //用来保存当前点击的li shippingMethod: 1, //配送类型1 标准 2高级 }, mounted: function () { this.$nextTick(function () { this.addressView(); }) }, methods: { addressView: function () { axios.get('data/address.json') .then((res) => { if(res.status === 200){ this.addressList = res.data.result; } }) .catch((err) => { console.log('get address data error'); }) }, loadMore: function () { this.limitNum = (this.limitNum==3)?this.addressList.length:3; //显示3条或显示全部 }, setDefault: function (_index) { this.addressList.forEach((address, index) => { address.isDefault = false; _index == index && (address.isDefault = true); //点击当前的li设为默认地址 }); }, delAddress: function (_index) { this.addressList.splice(_index,1); } }, computed: { filterAddress: function () { return this.addressList.slice(0,this.limitNum); }, } });
4 总结
4.1 默认显示指定条数的v-for列表循环
1:循环的时候就通过使用过滤器控制显示的条数 2:点击"more"时让控制条数的变量等于数组总长度
4.2 点击的某个循环列表指定样式 .xxx
1: 先定义一个变量 currentIndex:0; 2:@click="currentIndex=index"; 3:.class="{'xxx':currentIndex==index}"
4.3 点击设为“默认地址”,其他变为“设为默认”
1:将当前的列表的索引index传递过去 2:js代码中便利所有数组,将与传来的index与数组的index比较,index(页面)==index(数据)时设为默认,其他设为非默认
4.4 非循环出来的列表控制选中效果和非选中效果
1:初始一个变量 xxx:1 2:列表1: :class="{'类名':xxx==1}" @click="xxx=1"、 列表2: :class="{'类名':xxx==2}" @click="xxx=2"