1. 程式人生 > >微信小程序踩坑(不定時更新)

微信小程序踩坑(不定時更新)

變化 .net 需要 我們 應該 重聲明 比較 abcd 不一定

emmmm,覺得自己小程序太薄弱了,所以還是找個東西練手,不過還是要感謝某大神提供的“扒小程序”的方法,雖然不是說拿下來就能用,但是作為仿小程序來說,我要的圖片素材,頁面名稱都有了.

地址貼出來:https://blog.csdn.net/yuzsmc/article/details/82785466 (不一定適合每個人用,看情況吧)

接下來看看我這兩天踩的坑(小程序太久沒接觸了,跟剛學差不多)

1.this.setData報錯

這個問題大多數人都踩過坑了,原因就是在於wx.request 返回東西之後,success相當於一個內部閉包,this.data是拿不到東西的,所以需要在他之外著重聲明一下‘var that= this‘,或者你想用_this也行。

2.關於怎麽渲染循環數據。

從一進小程序的時候就需要把數據庫數據查出來渲染到頁面的公共data上面,或許你可以定個list:[],然後再試渲染頁面。跟著就是用wx:for="{{array}}",這點跟vue.js有些相似。然後,有個wx:for-item是用來指定‘數組當前元素變量名’的,看著名字解釋有點懵逼,但是看文檔eg之後就知道了,栗子是這樣的:{{item.name}},也就是說當wx:for-item="gushengyan"的時候,渲染列表元素就應該是{{gushengyan.name}},然後還有個wx:for-index,用來指定下標,這個在我踩的第三個坑會用到。

3.如何改變循環列表中某個元素屬性(class或者style , 主要是視圖變化)

舉個簡單的例子,在一堆循環下來的女明星ABCDE和何潔中,你要給何潔投票,每個頭像旁邊有個投票按鈕,點擊一下,發送請求到後臺,後臺完成數據庫修改返回,前端接收到返回的數據之後需要處理,當res.data.code==200的時候,需要把前端那個投票的按鈕顯示為已投票,怎麽做呢?我看到有人的方法是又循環所有的list,重新賦值list,emmm,個人認為不可取,萬一有那麽幾千幾萬個,可能會比較影響性能,就想改變那一個就行了,那麽問題來了,怎麽找到那個元素?this?不行,that?不行,也不能用jQuery,$(this)更不要想; ——想想剛才用指定的下標,我們暫且叫它Index,var Index = datas.currentTarget.dataset.index,打印一下發現真的是下標,好了,列表下標獲取到了,也就是在指定的list列表裏的第Index個數組元素裏就是我需要變更的數據,怎麽找到呢?

我先這麽試了下:

that.setData({
   list[Index].attend:res.data.vote
})
that.setData({
   “list[“+Index+”].attend”:res.data.vote
})

這都不用看,直接報錯,根本不用點擊,好吧,外面加引號試試:

that.setData({
   “list[Index].attend”:res.data.vote
})

這樣子,不點擊的時候是不報錯的,點擊之後就報錯

後來百度到一個方法,親測好使:https://blog.csdn.net/abc564643122/article/details/79580759

然後我也改改我的方法:

          success(res) {
          if(res.data.code==200){
            var change = "list["+Index+"].vote";
            that.setData({
              [change]:res.data.data.vote
            })
          }
          }

搞定。

微信小程序踩坑(不定時更新)