微信小程序點擊切換圖片、收藏功能的實現!


微信小程序圖片點擊切換和收藏功能是非常常用的!有更好寫法的請留言,喜歡小程序和web前端開發的請加我微信Angelo_Sifan

效果圖如下

1  <image  catchtap='onCollectionTap' wx:if="{{collected}}" src="/images/icon/collect1.png"></image>
2       <image wx:else catchtap='onCollectionTap' src="/images/icon/collect.png"></image>

首先對Image綁定相應變量,選用catchxxx而不選用bindxxx進行綁定是因為,catch不會出發冒泡事件就不會向父節點傳遞,寫的過程中一定要用wx:if和wx:else來進行判斷。然后我們還需要在JS中對onCollectionTap變量進行定義,最后當組件觸發事件時,邏輯層綁定該事件的處理函數會收到一個事件對象。

/*這是對應的JS文件*/
 2 Page({
 3 data: {
 4 
 5     },
 6     onLoad: function (option) {
 7     var postId = option.id;//要先在對應的數據文本中對每個欄目定義postId、比如postId: 0 postId:1
 8     this.data.currentPostId = postId; //借助頂部data作為中轉,拿到上面這行postid后,將它放到下面var postCollected = postsCollected[]中
 9         //將這個postId從onLoad中傳遞到下面的onCollectionTap中
10         var postData = postsData.postList[postId];//定義每個新聞列表對應順序是哪個新聞內容
11 
12 //用戶收藏功能
14        var postsCollected = wx.getStorageSync('posts_collected') //從緩存中讀取所有的緩存狀態
15         if (postsCollected) {   //postsCollected為真的情況,在緩存中存在
16             var postCollected = postsCollected[postId]//讀取其中一個緩存狀態
17             this.setData({
18                 collected: postCollected //將是否被收藏的狀態上綁定到collected這個變量上
19             })
20         }
21         else {       //為假的情況,緩存中為空的情況
22             var postsCollected = { }; //對postsCollected進行一個賦值操作,從而防止為空,從而省掉后面對它是否為空進行測試的步驟
23             postsCollected[postId] = false; // 讓當前的這篇文章狀態為false,從而收藏星星不點亮
24             wx.setStorageSync('posts_collected', postsCollected);//將postsCollected對象放到緩存中
25         }
26     },
27     onCollectionTap: function (event) {    // 定義onCollectionTap事件用來確定文章是否收藏,如果沒收藏就能點亮星星進行收藏
28         var postsCollected = wx.getStorageSync('posts_collected');   //獲取緩存的方法
29         var postCollected = postsCollected[this.data.currentPostId];   //確定當前文章是否有緩存的狀態,傳遞參數方法、借助其他參數來傳遞變量,如上的data
30         postCollected = !postCollected;// 取反操作,收藏變成未收藏、未收藏變為收藏
31         postsCollected[this.data.currentPostId] = postCollected;//整體緩存的某一篇文章的緩存值等於postCollected從而更新一個變量
32         wx.setStorageSync('posts_collected', postsCollected);//更新文章是否收藏的緩存值,相當於在數據庫中做了一次更新。
33         //更新Data的數據綁定變量,從而實現圖片切換
34         this.setData({
35             collected: postCollected //當前的collected為postCollected
36         })
37     }
38 )}

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM