小程序項(xiàng)目開發(fā)想實(shí)現(xiàn)全局監(jiān)聽globalData數(shù)據(jù)變化,可參考數(shù)據(jù)劫持的實(shí)現(xiàn)方式,代碼如下:
app.js
globalData: {
msgTotal: ''
},
// 使用數(shù)據(jù)劫持模式監(jiān)聽數(shù)據(jù)變化
observe(obj, key, watch, that) {
let val = obj[key];
Object.defineProperty(obj, key, {
configurable: true,
enumerable: true,
set: function (value) {
watch(val, value, that);
val = value;
},
get: function () {
return val;
}
})
}
頁(yè)面賦值msgTotal
const app = getApp()
Page({
setMsgTotal() {
app.globalData.msgTotal = res.data.total
}
})
組件內(nèi)監(jiān)聽msgTotal
const app = getApp()
methods: {
watch (oldVal, newVal, that) {
that.setData({
msgTotal: newVal
})
}
},
// 組件生命周期
lifetimes: {
// 組件進(jìn)入頁(yè)面節(jié)點(diǎn)樹執(zhí)行
attached() {
app.observe(app.globalData, "msgTotal", this.watch, this);
}
}
小程序頁(yè)面監(jiān)聽msgTotal
const app = getApp()
Page({
onReady() {
app.observe(app.globalData, "msgTotal", this.watch, this);
},
watch (oldVal, newVal, that) {
that.setData({
msgTotal: newVal
})
}
})