小程序 封裝的商品規(guī)格選擇器

? ? index? wxml

<button?class="btn"?bindtap="popup"?data-position="bottom">選擇商品</button>

<page-container? // 微信自己退出的底部彈出

??show="{{show}}"

??duration="200"

??position="{{position}}"

??close-on-slide-down="{{false}}"

>

??<view?class="detail-page">

????<selector?ws:if="{{selectorList}}"?skuList="{{skuList}}"??selectorListL="{{selectorList}}"??pitchOnList="{{pitchOnList}}"?bindmyevent="myevent"?></selector>

??</view>

</page-container>


index? js

//?index/index.js

Page({

??/**

???*?頁面的初始數(shù)據(jù)

???*/

??data:?{},

??/**

???*?生命周期函數(shù)--監(jiān)聽頁面加載

???*/

??onLoad:?function?(options)?{

????this.selector()

??},

??selector()?{

????var?that?=?this

????//?頁面加載到詳情頁?獲取詳情頁要渲染的數(shù)據(jù)

????var?api?=?'公司AP無法展示奏夫,可以看下面的數(shù)據(jù)格式? 去寫一個(gè)假數(shù)據(jù)'

????wx.request({

??????url:?api,

??????data:?{

????????productId:?123,

????????userId:?261,

????????partnerId:?0,

????????platform:?'miniProgram',

??????},

??????success(res)?{

????????that.onLoadList(res.data.data)

????????that.setData({

??????????selectorList:?res.data.data

????????})

??????}

????})

??},

??onLoadList(data)?{

????var?skuList?=?data.skuList

????var?objSku?=?{}

????for?(var?i?in?skuList)?{

??????objSku[skuList[i].value]?=?skuList[i];?//修改數(shù)據(jù)結(jié)構(gòu)格式挑秉,改成鍵值對的方式,以方便和選中之后的值進(jìn)行匹配

????}

????this.setData({

??????skuList:?objSku,

??????pitchOnList:?skuList[0].value.split(',')

????})

??},

??popup(e)?{

????const?position?=?e.currentTarget.dataset.position

????let?customStyle?=?''

????let?duration?=?this.data.duration

????switch?(position)?{

??????case?'top':

??????case?'bottom':

????????customStyle?=?'height:?80%;'

????????break

??????case?'right':

????????break

????}

????this.setData({

??????position,

??????show:?true,

??????customStyle,

??????duration

????})

??},

??myevent(e)?{

????console.log(e.detail.res);

????this.setData({

??????show:?false

????})

??},

})


index? json

{

??"usingComponents":?{

????"selector":"/components/selector/selector"

??}

}


組件 selector? wxml

<view?class="selector">

??<view?class="close"?catchtap="close">X</view>

??<!--?商品信息?-->

??<view?class="top"?>

????<image?class="image"?src="{{skuListSelect.image?||?selectorListL.skuList[0].image?}}"></image>

????<view?class="money">

??????<view>¥{{skuListSelect.price?||?selectorListL.skuList[0].price?}}</view>

??????<view>庫存?{{skuListSelect.stock?||?selectorListL.skuList[0].stock?}}?件</view>

??????<view>已選:{{skuListSelect.value?||?selectorListL.skuList[0].value?}}</view>

????</view>

??</view>

??<!--?規(guī)格渲染?-->

??<scroll-view?scroll-y="true"?style="height:?500rpx;">

??<view?class="center">

????<!--?循環(huán)渲染規(guī)格里面的數(shù)據(jù)??渲染第一層的數(shù)據(jù)??wx:for-index="fuIndex"???父級(jí)的索引?

?????wx:for-item="item1"??渲染的item??重新命名防止沖突

?????-->

????<block?wx:for="{{selectorListL.specList}}"?wx:key="index"?wx:for-index="fuIndex"?wx:for-item="item1">

????<view>{{item1.name}}</view>

??????<!--?渲染規(guī)格下面的第二條數(shù)據(jù)?-->

??????<view?class="flexView">

????????<block?wx:for="{{item1.list}}"?wx:key="index"?wx:for-index="ziIndex"?wx:for-item="item2">

??????????<text?class="item2?{{subIndex[fuIndex]?==?ziIndex?'item2Class':''}}"bindtap="pitchOn"?data-select="{{item2}}"?data-fuindex="{{fuIndex}}"data-ziindex="{{ziIndex}}"

??????????>{{item2.name}}</text>

????????</block>

??????</view>

????</block>

??</view>

</scroll-view>

??<!--?最下面的確認(rèn)按鈕?-->

??<view>

????<button?bindtap="affirm">確認(rèn)</button>

??</view>

</view>


組件? selector js

//?components/selector/selector.js

Component({

??/**

???*?組件的屬性列表

???*/

??properties:?{

????selectorListL:{

??????type:Object,

??????value:{},

????},

????skuList:{

??????type:Object,

??????value:{},

????},

????pitchOnList:{

??????type:Array,

??????value:[]

????}

??},

??/**

???*?組件的初始數(shù)據(jù)

???*/

??data:?{

????pitchOnList:?[],?//?被選中的值

????subIndex:?[0,?0],?//?選中的索引?0,0?默認(rèn)選中第一個(gè)

????skuListSelect:{},?//?選中的值

??},

??/**

???*?組件的方法列表

???*/

??methods:?{

????//?選中的內(nèi)容

????pitchOn(e){

??????var?that?=?this

??????let?fuindex?=?e.currentTarget.dataset.fuindex;?//?獲取第一個(gè)循環(huán)的index

??????let?ziindex?=?e.currentTarget.dataset.ziindex?//?獲取第二個(gè)循環(huán)的index

??????let?selectItem?=?e.currentTarget.dataset.select.name?//?當(dāng)前選中的數(shù)據(jù)

??????//?存放點(diǎn)擊的數(shù)據(jù)

??????var?pitchOnList?=?this.data.pitchOnList

??????that.setData({

????????[`pitchOnList[${fuindex}]`]?:?selectItem,

??????})

????wx.nextTick(

??????that.setData({

????????skuListSelect:?that.data.skuList[pitchOnList],

????????[`subIndex[${fuindex}]`]?:?ziindex

??????})

????)

????},

????//?確認(rèn)??把選中的數(shù)據(jù)返回

????affirm(){

??????this.triggerEvent('myevent',{res:this.data.skuList[this.data.pitchOnList]})

????},

????close(){

?????this.affirm()

????},

??}

})


組件 selector json

{

??"component":?true,

??"usingComponents":?{}

}


組件 selector wxss

/*?components/selector/selector.wxss?*/

page{

??background-color:?#f7f7f7;

}

.selector{

??margin:?20rpx??30rpx;

??background-color:?#fff;

??padding:?15rpx;

}

.image{

??width:?200rpx;

??height:?200rpx;

}

.top{

??display:?flex;

}

.flexView{

??display:?flex;

??flex-wrap:wrap;

}

.item2{

??padding:?15rpx?10rpx;

??border:?1rpx?solid?#ccc;

??border-radius:?5rpx;

??margin:?10rpx;

}

.item2Class{

??border:?1rpx?solid?#3399ff;

}

.close{

??position:?absolute;

??top:?30rpx;

??right:?30rpx;

}



數(shù)據(jù)結(jié)構(gòu)1


數(shù)據(jù)結(jié)構(gòu)2


數(shù)據(jù)結(jié)構(gòu)3


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末高镐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子啤月,更是在濱河造成了極大的恐慌煮仇,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谎仲,死亡現(xiàn)場離奇詭異浙垫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)郑诺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門夹姥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辙诞,你說我怎么就攤上這事辙售。” “怎么了飞涂?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵旦部,是天一觀的道長。 經(jīng)常有香客問我封拧,道長志鹃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任泽西,我火速辦了婚禮曹铃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捧杉。我一直安慰自己陕见,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布味抖。 她就那樣靜靜地躺著评甜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仔涩。 梳的紋絲不亂的頭發(fā)上忍坷,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音熔脂,去河邊找鬼佩研。 笑死,一個(gè)胖子當(dāng)著我的面吹牛霞揉,可吹牛的內(nèi)容都是我干的旬薯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼适秩,長吁一口氣:“原來是場噩夢啊……” “哼绊序!你這毒婦竟也來了硕舆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤骤公,失蹤者是張志新(化名)和其女友劉穎抚官,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淋样,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耗式,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趁猴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刊咳。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖儡司,靈堂內(nèi)的尸體忽然破棺而出娱挨,到底是詐尸還是另有隱情,我是刑警寧澤捕犬,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布跷坝,位于F島的核電站,受9級(jí)特大地震影響碉碉,放射性物質(zhì)發(fā)生泄漏柴钻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一垢粮、第九天 我趴在偏房一處隱蔽的房頂上張望贴届。 院中可真熱鬧,春花似錦蜡吧、人聲如沸毫蚓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽元潘。三九已至,卻和暖如春君仆,著一層夾襖步出監(jiān)牢的瞬間翩概,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工返咱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氮帐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓洛姑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親皮服。 傳聞我的和親對象是個(gè)殘疾皇子楞艾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容