微信小程序之 catalog 切換實(shí)現(xiàn)解析
組件名稱:catalog
組件屬性:catalogData,type:String
組件描述:這是一個(gè)子組件,數(shù)據(jù)從父組件中傳遞
效果圖:

catalog 目錄為多個(gè),使用 scroll-view 容器。但是在當(dāng)前組件中,只寫(xiě)每個(gè) catalog 數(shù)據(jù)展示并實(shí)現(xiàn) catalog 切換效果,這樣會(huì)保證當(dāng)前組件的最小粒度。
分析當(dāng)前組件可能用到的屬性為:組件名稱,切換狀態(tài),未選中狀態(tài),切換點(diǎn)擊方法。
<block wx:for="{{catalogData}}" wx:key="id" wx:for-item="item" class="item">
<view class="scroll-view-item catalog-title {{curIndex == index ? 'catalog-active' : 'catalog-normal'}}" data-index="{{index}}" catchtap="goIndex">{{item.catalog}}</view>
</block>
curIndex 為點(diǎn)擊當(dāng)前 catalog 時(shí)獲取的 index
index 為 catalogData 這個(gè)數(shù)組默認(rèn)的 index, 也就是 data-index 的值
goIndex 為點(diǎn)擊當(dāng)前 catalog 的方法,通過(guò)點(diǎn)擊獲取到 curIndex 的值
通過(guò)判斷當(dāng)前 curIndex 是否與數(shù)組中的 index 是否相等,如果相等,則給當(dāng)前 catalog 添加選中的樣式 catalog-active,否則添加 catalog-normal。
更新默認(rèn) curIndex 的默認(rèn)值
Component({
/**
* 組件的屬性列表
*/
properties: {
catalogData:{
type: Array,
}
},
/**
* 組件的初始數(shù)據(jù)
*/
data: {
curIndex:0
},
/**
* 組件的方法列表
*/
methods: {
goIndex(event) {
let nextIndex = event.currentTarget.dataset.index;
this.setData({
curIndex: nextIndex
})
console.log(this.data.curIndex + '=' + nextIndex);
},
}
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript無(wú)阻塞加載和defer、async詳解
JS具有阻塞特性,當(dāng)瀏覽器在執(zhí)行js代碼時(shí),不能同時(shí)做其它事情,所有瀏覽器在下載JS的時(shí)候,會(huì)阻止一切其他活動(dòng),比如其他資源的下載,內(nèi)容的呈現(xiàn)等等。至到JS下載、解析、執(zhí)行完畢后才開(kāi)始繼續(xù)并行下載其他資源并呈現(xiàn)內(nèi)容。2017-02-02
chrome瀏覽器如何斷點(diǎn)調(diào)試異步加載的JS
在線一元二次方程計(jì)算器實(shí)例(方程計(jì)算器在線計(jì)算)
javascript模擬select,jselect的方法實(shí)現(xiàn)
div+css+js實(shí)現(xiàn)無(wú)縫滾動(dòng)類(lèi)似marquee無(wú)縫滾動(dòng)兼容firefox
javaScript實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制字符

