写点什么

微信小程序之商品属性分类 —— 微信小程序实战商城系列

用户头像
Android架构
关注
发布于: 8 小时前

</view>


</view>


<view class="weui-btn-area">


<button class="weui-btn" type="primary" bindtap="submit">确定</button>


</view>


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;


}


/属性名/


.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 10rpx;


margin: 0 10rpx;


border: 1rpx solid #ececec;


}


/每个属性选中的当前样式/


.attr_value_active {


background: #FFCC00;


border-radius: 10rpx;


color: #fff;


padding: 0 10rpx;


}


/禁用属性/


.attr_value_disabled {


color: #ccc;


}


/button/


.btn-area {


margin: 1.17647059em 15px 0.3em;


}


.btn {


margin-top: 15px;


background-color:#FFCC00;


color: #fff;


}


.btn:first-child {


margin-top: 0;


}


js:


数据部分,一般情况都是访问接口获取数据的,这里并没有使用网络访问,为了简化 demo,直接把一组数据放在 data 对象中。


Page({


data: {


firstIndex: -1,


//准备数据


//数据结构:以一组一组来进行设定


commodityAttr: [


{


priceId: 1,


price: 35.0,


"stock": 8,


"attrValueList": [


{


"attrKey": "型号",


"attrValue": "2"


},


{


"attrKey": "颜色",


"attrValue": "白色"


},


{


"attrKey": "大小",


"attrValue": "小"


},


{


"attrKey": "尺寸",


"attrValue": "S"


}


]


},


{


priceId: 2,


price: 35.1,


"stock": 9,


"attrValueList": [


{


"attrKey": "型号",


"attrValue": "1"


},


{


"attrKey": "颜色",


"attrValue": "黑色"


},


{


"attrKey": "大小",


"attrValue": "小"


},


{


"attrKey": "尺寸",


"attrValue": "M"


}


]


},


{


priceId: 3,


price: 35.2,


"stock": 10,


"attrValueList": [


{


"attrKey": "型号",


"attrValue": "1"


},


{


"attrKey": "颜色",


"attrValue": "绿色"


},


{


"attrKey": "大小",


"attrValue": "大"


},


{


"attrKey": "尺寸",


"attrValue": "L"


}


]


},


{


priceId: 4,


price: 35.2,


"stock": 10,


"attrValueList": [


{


"attrKey": "型号",


"attrValue": "1"


},


{


"attrKey": "颜色",


"attrValue": "绿色"


},


{


"attrKey": "大小",


"attrValue": "大"


},


{


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


"attrKey": "尺寸",


"attrValue": "L"


}


]


}


],


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:'型号',

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
微信小程序之商品属性分类 —— 微信小程序实战商城系列