本周六遇到一个小程序BUG,请查看!
现象:本地变量遭不明原因篡改。
微信开发者工具版本:1.02 1803210
IOS: 11.3
描述如下:
现有两个页面test01、test02。
test01视图层代码如下:
<view catchtap=“turntodtls”>
<view>{{A.code}}</view>
<view>{{A.data}}</view>
</view>
test01逻辑层代码如下:
const app = getApp()
Page({
data: {
A: null
},
turntodtls: function (e) {
app.globalData.D = this.data.A
console.log(this.data.A)
wx.navigateTo({
url: ‘…/test02/test02’
})
},
onLoad: function (options) {
this.setData ({
A: { code: “0”, data: “sinopec” }
})
},
})
test02视图层代码如下:
<view>
<view>
<input value="{{B.code}}" bindblur=“getvalue” id=“code”></input>
</view>
<view>
<input value="{{B.data}}" bindblur=“getvalue” id=“data”></input>
</view>
</view>
test02逻辑层代码如下:
var C = {}
const app = getApp()
Page({
data: {
B: null
},
getvalue: function (e) {
if (e.detail.value != “”) {
C[e.currentTarget.id] = e.detail.value
}
},
onLoad: function () {
C = {}
C = app.globalData.D
this.setData ({
B: C
})
},
})
两个页面拟通过全局变量D传递值。
App({
globalData: {
D: null,
},
首先点击test01,页面将以navigateTo方式转至test02,此时继续点击并修改test02中input的值(例如将“sinopec”改为“sino”),并失去焦点(目的是触发绑定函数getvalue),其后点击小程序左上角返回test01页面,并再次进入test02页面,发现页面显示“sino”(原本显示sinopec),打印test01页面中本地变量__A__后发现其值遭到篡改,如下如所示,原因不明。
微信开发者工具和真机调试均有此现象