今天在用wepy搞小程序的時候遇到了一個小坑,卡了我好一會,因為之前在做React,所以對wepy的了解不是特別深入,所以導致了這個問題的發生
先貼上來關鍵代碼讓大家看一看(備注之處是問題解決的方法)


效果:

我們可以看到剛進來時整個頁面都沒數據,但我點別的選項之后數據又會出來
why?當時我真的是滿臉懵逼啊,數據也獲取到了就是第一次不渲染,給我急得差點把自己的頭發都薅干凈了
經過我一番調試,發現他奶奶的checkStep里面的賦值附近有問題,當時我腦子一熱把賦值改成了用setData()結果一點效果沒有,用this.itemchecked賦值還是第一次不出來,
在我即將把頭發薅干凈之際,我的大腿過來幫我看了一眼,輕飄飄的來了句你缺了this.$apply(),我日,我趕緊試了試,還真是

!!!!!一切正常
那為啥需要調用this.$apply()呢,
可以看到methods里面的方法被bindtap調用之后觸發了頁面渲染,而當我在onLoad()里面調用時卻沒有觸發頁面渲染
經過我一番搜索和查證得到以下結果:
使用wepy框架寫小程序,data賦值這里不需要使用this.setData({}),例如:data:{x:''1"},
比如data里面你定義了一個x='',然后你在自定義的方法里面用this.x=200 之后,需要用this.$apply()來進行數據綁定。這樣你在view中綁定data中的x變量時,才會有200,不然就是空
(特別注意:)
不過有個前提,method里面的方法是不用這個的,但methods里面只能放bindtap這類方法,所以你自己定義的其他方法,或者寫在onshow里面,就必須得用this.$apply()。
this.$apply()使用場景:
1.異步更新數據
2.手動刷新DOM
哈哈哈,有一個小坑被我踩過了,美滋滋!
