小程序有globalData,这是一种简单的全局变量机制。这套机制在uni-app里也可以使用,并且全端通用。
1,onLaunch时,getApp对象还未获取,暂时可以使用this.globalData获取globalData
2,需要把globalData的数据绑定到页面上,可在页面的onShow页面生命周期里进行变量重赋值
3,getApp()
函数用于获取当前应用实例,一般用于获取globalData 。
以下是 App.vue 中定义globalData的相关配置:
<script>
export default {
globalData: {
paySuccess: 1
},
methods: {
// 监听 globalData 全局变量 paySuccess
watch:function(method,istr){
var obj = this.globalData
console.log(obj)
Object.defineProperty(obj,istr,{
configurable:true,
enumerable:true,
set:function(value){
this._consumerStatus = value
method(value)
},
get:function(value){
return this._consumerStatus
}
})
},
change(){
getApp().globalData.paySuccess = 2
},
}
}
</script>
以下是引入全局变量使用,并接收全局监听:
<script>
const App = getApp()
export default {
data() {},
onLoad() {
App.watch(this.getPaySuccess,'paySuccess') // paySuccess是globalData中定义的属性
},
methods: {
getPaySuccess(val){
console.log('输出变化的值',val)
},
}
}
</script>