当前位置: 首页 > news >正文

德阳市网站建设_网站建设公司_自助建站_seo优化

dw做的网站要多大,专业网站seo推广,网站开发引发的官司,深圳宝安大型网站建设公司本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果#xff0c;素材参考了一点点奶茶。 效果演示#xff1a; 商品属性联动.gif代码示例 1、commodity.xml !-- view classtitle属性值联动选择/view -- !--… 本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果素材参考了一点点奶茶。 效果演示 商品属性联动.gif 代码示例 1、commodity.xml !-- view classtitle属性值联动选择/view -- !--options-- view classcommodity_attr_list !--每组属性-- view classattr_box wx:for{{attrValueList}} wx:for-itemattrValueObj wx:for-indexattrIndex !--属性名-- view classattr_name{{attrValueObj.attrKey}}/view !--属性值-- view classattr_value_box !--每个属性值-- view classattr_value {{attrIndexfirstIndex || attrValueObj.attrValueStatus[valueIndex]?(valueattrValueObj.selectedValue?attr_value_active:):attr_value_disabled}} bindtapselectAttrValue data-status{{attrValueObj.attrValueStatus[valueIndex]}} data-value{{value}} data-key{{attrValueObj.attrKey}} data-code{{attrCode}} data-index{{attrIndex}} data-selectedvalue{{attrValueObj.selectedValue}} wx:for{{attrValueObj.attrValues}} wx:for-itemvalue wx:for-indexvalueIndex{{value}}/view /view /view /view !--button-- view classweui-btn-area button classweui-btn bindtapsubmit选好了 /button /view 上述代码把页面盒子分为两部分commodity_attr_list和weui-btn-area。 commodity_attr_list循环获取商品的属性名和相对应的属性值并布局页面。 weui-btn-area提交校验并获取选中商品属性结果。 2、commodity.js 数据结构 //数据结构以一组一组的数据来进行设定 commodityAttr: [{priceId: 1,price: 35.0,stock: 8, attrValueList: [ { attrKey: 规格, attrValue: 免费配料, attrCode: 1001 }, { attrKey: 甜度, attrValue: 七分甜, attrCode: 2001 }, { attrKey: 加料, attrValue: 珍珠, attrCode: 3001 }, { attrKey: 冰块, attrValue: 少冰, attrCode: 4001 } ] }, { priceId: 2, price: 35.1, stock: 9, attrValueList: [ { attrKey: 规格, attrValue: 燕麦, attrCode: 1002 }, { attrKey: 甜度, attrValue: 五分甜, attrCode: 2002 }, { attrKey: 加料, attrValue: 椰果, attrCode: 3002 }, { attrKey: 冰块, attrValue: 去冰, attrCode: 4002 } ] }, { priceId: 3, price: 35.2, stock: 10, attrValueList: [ { attrKey: 规格, attrValue: 布丁, attrCode: 1003 }, { attrKey: 甜度, attrValue: 无糖, attrCode: 2003 }, { attrKey: 加料, attrValue: 仙草, attrCode: 3003 }, { attrKey: 冰块, attrValue: 常温, attrCode: 4003 } ] }, { priceId: 4, price: 35.2, stock: 10, attrValueList: [ { attrKey: 规格, attrValue: 再加一份奶霜, attrCode: 1004 }, { attrKey: 甜度, attrValue: 无糖, attrCode: 2003 }, { attrKey: 加料, attrValue: 仙草, attrCode: 3004 }, { attrKey: 冰块, attrValue: 热饮, attrCode: 4004 } ] }, { priceId: 5, price: 35.2, stock: 10, attrValueList: [ { attrKey: 规格, attrValue: 免费配料, attrCode: 1004 }, { attrKey: 甜度, attrValue: 五分甜, attrCode: 2003 }, { attrKey: 加料, attrValue: 椰果, attrCode: 3004 }, { attrKey: 冰块, attrValue: 常温, attrCode: 4004 } ] } ], attrValueList: [] } 属性选中和取消选择效果处理 onShow: function () {this.setData({ includeGroup: this.data.commodityAttr }); this.distachAttrValue(this.data.commodityAttr); // 只有一个属性组合的时候默认选中 // console.log(this.data.attrValueList); if (this.data.commodityAttr.length 1) { for (var i 0; i this.data.commodityAttr[0].attrValueList.length; i ) { this.data.attrValueList[i].selectedValue this.data.commodityAttr[0].attrValueList[i].attrValue; } this.setData({ attrValueList: this.data.attrValueList }); } }, /* 获取数据 */ distachAttrValue: function (commodityAttr) { /** 将后台返回的数据组合成类似 { attrKey:型号, attrValueList:[1,2,3] } */ // 把数据对象的数据视图使用写到局部内 var attrValueList this.data.attrValueList; // 遍历获取的数据 for (var i 0; i commodityAttr.length; i ) { for (var j 0; j commodityAttr[i].attrValueList.length; j ) { var attrIndex this.getAttrIndex(commodityAttr[i].attrValueList[j].attrKey, attrValueList); // console.log(属性索引, attrIndex); // 如果还没有属性索引为-1此时新增属性并设置属性值数组的第一个值索引大于等于0表示已存在的属性名的位置 if (attrIndex 0) { // 如果属性值数组中没有该值push新值否则不处理 if (!this.isValueExist(commodityAttr[i].attrValueList[j].attrValue, attrValueList[attrIndex].attrValues)) { attrValueList[attrIndex].attrValues.push(commodityAttr[i].attrValueList[j].attrValue); } } else { attrValueList.push({ attrKey: commodityAttr[i].attrValueList[j].attrKey, attrValues: [commodityAttr[i].attrValueList[j].attrValue] }); } } } // console.log(result, attrValueList) for (var i 0; i attrValueList.length; i ) { for (var j 0; j attrValueList[i].attrValues.length; j ) { if (attrValueList[i].attrValueStatus) { attrValueList[i].attrValueStatus[j] true; } else { attrValueList[i].attrValueStatus []; attrValueList[i].attrValueStatus[j] true; } } } this.setData({ attrValueList: attrValueList }); }, getAttrIndex: function (attrName, attrValueList) { // 判断数组中的attrKey是否有该属性值 for (var i 0; i attrValueList.length; i ) { if (attrName attrValueList[i].attrKey) { break; } } return i attrValueList.length ? i : -1; }, isValueExist: function (value, valueArr) { // 判断是否已有属性值 for (var i 0; i valueArr.length; i ) { if (valueArr[i] value) { break; } } return i valueArr.length; }, /* 选择属性值事件 */ selectAttrValue: function (e) { /* 点选属性值联动判断其他属性值是否可选 { attrKey:型号, attrValueList:[1,2,3], selectedValue:1, attrValueStatus:[true,true,true] } console.log(e.currentTarget.dataset); */ var attrValueList this.data.attrValueList; var index e.currentTarget.dataset.index;//属性索引 var key e.currentTarget.dataset.key; var value e.currentTarget.dataset.value; if (e.currentTarget.dataset.status || index this.data.firstIndex) { if (e.currentTarget.dataset.selectedvalue e.currentTarget.dataset.value) { // 取消选中 this.disSelectValue(attrValueList, index, key, value); } else { // 选中 this.selectValue(attrValueList, index, key, value); } } }, /* 选中 */ selectValue: function (attrValueList, index, key, value, unselectStatus) { // console.log(firstIndex, this.data.firstIndex); var includeGroup []; if (index this.data.firstIndex !unselectStatus) { // 如果是第一个选中的属性值则该属性所有值可选 var commodityAttr this.data.commodityAttr; // 其他选中的属性值全都置空 // console.log(其他选中的属性值全都置空, index, this.data.firstIndex, !unselectStatus); for (var i 0; i attrValueList.length; i ) { for (var j 0; j attrValueList[i].attrValues.length; j ) { attrValueList[i].selectedValue ; } } } else { var commodityAttr this.data.includeGroup; } // console.log(选中, commodityAttr, index, key, value); for (var i 0; i commodityAttr.length; i ) { for (var j 0; j commodityAttr[i].attrValueList.length; j ) { if (commodityAttr[i].attrValueList[j].attrKey key commodityAttr[i].attrValueList[j].attrValue value) { includeGroup.push(commodityAttr[i]); } } } attrValueList[index].selectedValue value; // 判断属性是否可选 for (var i 0; i attrValueList.length; i ) { for (var j 0; j attrValueList[i].attrValues.length; j ) { attrValueList[i].attrValueStatus[j] false; } } for (var k 0; k attrValueList.length; k ) { for (var i 0; i includeGroup.length; i ) { for (var j 0; j includeGroup[i].attrValueList.length; j ) { if (attrValueList[k].attrKey includeGroup[i].attrValueList[j].attrKey) { for (var m 0; m attrValueList[k].attrValues.length; m ) { if (attrValueList[k].attrValues[m] includeGroup[i].attrValueList[j].attrValue) { attrValueList[k].attrValueStatus[m] true; } } } } } } // console.log(结果, attrValueList); this.setData({ attrValueList: attrValueList, includeGroup: includeGroup }); var count 0; for (var i 0; i attrValueList.length; i ) { for (var j 0; j attrValueList[i].attrValues.length; j ) { if (attrValueList[i].selectedValue) { count ; break; } } } if (count 2) {// 第一次选中同属性的值都可选 this.setData({ firstIndex: index }); } else { this.setData({ firstIndex: -1 }); } }, /* 取消选中 */ disSelectValue: function (attrValueList, index, key, value) { var commodityAttr this.data.commodityAttr; attrValueList[index].selectedValue ; // 判断属性是否可选 for (var i 0; i attrValueList.length; i ) { for (var j 0; j attrValueList[i].attrValues.length; j ) { attrValueList[i].attrValueStatus[j] true; } } this.setData({ includeGroup: commodityAttr, attrValueList: attrValueList }); for (var i 0; i attrValueList.length; i ) { if (attrValueList[i].selectedValue) { this.selectValue(attrValueList, i, attrValueList[i].attrKey, attrValueList[i].selectedValue, true); } } } 结果提交 submit: function () {var value []; for (var i 0; i this.data.attrValueList.length; i ) { if (!this.data.attrValueList[i].selectedValue) { break; } value.push(this.data.attrValueList[i].selectedValue); } if (i this.data.attrValueList.length) { wx.showToast({ title: 请选择完整, icon: loading, duration: 1000 }) } else { var valueStr ; for(var i 0;i value.length;i ){ console.log(value[i]); valueStr value[i] ,; } wx.showModal({ title: 提示, content: valueStr, success: function (res) { if (res.confirm) { console.log(用户点击确定) } else if (res.cancel) { console.log(用户点击取消) } } }) console.log(valueStr); } } 3、commodity.wxss .title { padding: 10rpx 20rpx; margin: 10rpx 0; border-left: 4rpx solid #ccc; } /*全部属性的主盒子*/ .commodity_attr_list { background: #fff; padding: 0 20rpx; font-size: 26rpx; overflow: hidden; width: 100%; } /*每组属性的主盒子*/ .attr_box { width: 100%; overflow: hidden; border-bottom: 1rpx solid #ececec; display: flex; flex-direction: column; } /*属性名*/ .attr_name { width: 20%; float: left; padding: 15rpx 0; } /*属性值*/ .attr_value_box { width: 80%; float: left; padding: 15rpx 0; overflow: hidden; } /*每个属性值*/ .attr_value { float: left; padding: 0 30rpx; margin: 10rpx 10rpx; border: 1rpx solid #ececec; border-radius:5px; line-height:30px; } /*每个属性选中的当前样式*/ .attr_value_active { border-radius: 10rpx; color: #0089dc; padding: 0 30rpx; border: 1rpx solid #0089dc; /* background: #fff; */ } /*禁用属性*/ .attr_value_disabled { color: #ccc; } /*button*/ .weui-btn-area { margin: 1.17647059em 15px 0.3em; } .weui-btn{ width: 80%; height: 100rpx; border-radius: 3rpx; background-color:#0089dc; color: #fff; } 好了复制上述代码就可以实现效果哦赶紧试试吧 作者IT实战联盟Lin链接https://www.jianshu.com/p/f7f5f593b8e3來源简书简书著作权归作者所有任何形式的转载都请联系作者获得授权并注明出处。更多专业前端知识请上 【猿2048】www.mk2048.com
http://www.ihoyoo.com/news/36880.html

相关文章:

  • 广州番禺网站公司哪家好响应式网站字体大小
  • 耿马网站建设网站文件权限设置
  • 铭泰东莞网站建设策划书平台建设部分
  • 网站运营有哪些岗位创同盟做网站好不好
  • 大连网站开发公司整合网络营销策划
  • 天津网站优化微信小程序制作网站
  • php 网站开发文档怎么写蛋糕店网站源码
  • aliyun怎么建网站iis禁止通过ip访问网站
  • 企业门户网站建设的必要性免费查公司的网站
  • 湖南衡阳网站建设alexa排名是什么意思
  • 做网站的用什么电脑好韵博工业设计
  • 免费自助建站网站一览自助建站平台wordpress图片变形
  • 2021年最新的网站可信赖的商城网站建设
  • iis 建设网站黑人做爰视频免费网站
  • dz系统怎么做地方网站wordpress register位置
  • 做一款网站网页游戏大厅在线玩
  • 深圳网站建设方维网络黄石网站建设哪家专业
  • 一个备案可以做几个网站友好链接
  • 淘宝客合伙人网站建设微信官方商城小程序
  • 没有网站的域名对做网站有什么建议
  • 网站屏幕自适应wordpress 改成宽屏
  • 北京网站案例wap免费空间
  • 网站不备案可以建设吗新闻资讯网站怎么做
  • 洛阳孟津网站建设大学英文网站建设
  • 建筑资源网站做旅游销售网站平台ppt模板
  • 网站运营需要做什么宁化县建设局网站
  • 实训课网站开发个人小结给企业做网站的公司有哪些
  • 前端网站建设和维护网站开发的公司名称
  • 小型企业类网站开发公司平板电脑网站模板
  • 如何与网站建立私密关系网站中的滑动栏怎么做