如題:
當動態(tài)設置了app.datas的值之后,打開小程序,在其它頁面app.datas讀取的值卻為undefined
然之前開發(fā)的版本,這樣做都是沒有問題的,現(xiàn)在怎么做都無法讀?。?/p>
網友回復:
仔細看了一下,不是無法傳遞,而是無法動態(tài)改變,那之前的為毛可以?
比如先設定app.datas=null
進入主頁后,先支行APP里的方法讓app.setdatas();//設置app.datas-=100
此時,在沒關閉頁面的情況下,再在其它頁面輸出app.datas仍然是空。
怎么設置都無用,采用了globalData也無法動態(tài)改變其值。難道是BUG?
這個大概屬于 js 語法層級的東西,想出 BUG 都難哪,呵呵
還是直接貼代碼吧,否則沒法猜。
App({
userArray:{},
login:function(){
var that=this;
這里是發(fā)送一個POST,返回結果正確,返回的是用戶數(shù)據(jù)
返回成功后
log(res.data)
that.userArray=res.data;
//調試沒問題
}
})
index.js
加載頁面后調用app.login();這里一切正常,也能返回數(shù)據(jù)。之后再:
log(app.userArray.id) 數(shù)據(jù)就無法再調用,仍是空
在app里將這些變量放在globalData里,
如:globalData:{userArray:{}}再去使用login動態(tài)去改變這個值,再如上操作在其它頁面還是獲取不到。只有在方法里才可以輸出返回的數(shù)據(jù)。
但是在沒更新之前做的一個小程序也是這樣用的,是沒有問題的,而且操作過app.login()之后,在其它頁面里均可用
app.userArray.xxx進行調用。
那么問題就來了,若是這樣做無效,為什么上一個小程序沒問題,且放在globalData里也無法調用呢?
又測試了一下,靜態(tài)的值是可以獲取的,現(xiàn)在是不能動態(tài)改變VAR變量的值。按道理來講應該是能改變的。并且上一個完成的小程序是可以使用的。所以是搞不懂了。
問題找到了,本來是按順序寫的,卻出現(xiàn)了優(yōu)先級的問題,
導致APP POST方法還沒有返回,就執(zhí)行了后面的操作,所以APP.USERARRAY的值還沒有取到。
之前INDEX首頁沒有立即使用到POST回調的數(shù)據(jù)。
分開放在ONLAUNCH和ONSHOW里效果也不明顯。再重新用其它辦法吧。。。
在 app.js 中把對該數(shù)據(jù)的訪問包裝成一個異步方法,通過回調函數(shù)提供數(shù)據(jù)。