微信小程序|自定義摺疊面板

歡迎點擊「算法與編程之美」↑關注我們!

本文首發於微信公衆號:"算法與編程之美",歡迎關注,及時瞭解更多此係列文章。

問題描述

如何實現一個可以自定義內容的摺疊面板?

如何對點擊、關閉的圖標進行條件渲染?

在小程序頁面中,一個可點開、關閉的摺疊面板,並且能在點開面板中任意添加不同的內容,需要了解到不同組件的用法、事件綁定的方法以及條件渲染的方法。

解決方案

1wxml事件綁定

首先需要在view中加入data-index在事件中獲取這些自定義的節點數據,用於事件的邏輯處理;然後需要添加catchtap事件綁定。

注意:關閉時是向下箭頭,點擊後是向上箭頭。這個過程需要對圖片進行條件渲染,添加一個shouIndex。代碼如下:

1 wxml代碼示例

<view>

     <view data-index='1' catchtap='panel'>

       <view>創建的歌單</view>

       <view><image src="/images/{{showIndex ==  1 ? 'up':'down'}}.png"></image></view>

     </view>

     <view wx:if="{{showIndex == 1}}">

     <view>

       <view>

       <image src="/images/img4.jpg"></image>

       <text>歌單1</text>

       </view>

       <view>

       <image  src="/images/img5.jpg"></image>

       <text>歌單2</text>

       </view>

       <view>

       <image  src="/images/img6.jpg"></image>

       <text>歌單3</text>

       </view>

     </view>

     </view>

   </view>

(2)wxss配置

wxss中需要配置將文字和箭頭圖片放在一行的左右兩端。代碼如下:

2 wxss代碼示例

.help_item {

   margin: 10rpx auto;

}

.title {

   font-size: 40rpx;

   height: 100rpx;

   line-height: 100rpx;

   background: aliceblue;

   display: flex;

}

.title_1 {

   width: 630rpx;

   height: 100rpx;

   padding-left: 20rpx;

}

.title_2 {

   width: 50rpx;

   height: 100rpx;

   text-align: center;

}

.title_2 image {

   width: 40rpx;

   height: 40rpx;

   margin: 30rpx auto;

}

(3)js配置

wxml中已經準備好的事件catchtap='panel'進行數據的綁定。代碼如下:

3 js代碼示例

panel: function (e) {

     if (e.currentTarget.dataset.index != this.data.showIndex) {

       this.setData({

         showIndex: e.currentTarget.dataset.index

       })

     } else {

       this.setData({

        showIndex: 0

       })

     }

   },

(4)效果圖

結語

摺疊面板的實現主要放在事件綁定上,注意用到的是catch事件綁定,因爲它可以阻止冒泡事件向上冒泡。摺疊面板也可以根據需要在展開的面板中進行自定義的配置。

主       編   |   王楠嵐

責       編   |   吳怡辰

 where2go 團隊


   

微信號:算法與編程之美          

長按識別二維碼關注我們!

溫馨提示:點擊頁面右下角“寫留言”發表評論,期待您的參與!期待您的轉發!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章