4722关注14156浏览
本周六遇到一个小程序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后发现其值遭到篡改,如下如所示,原因不明。
微信开发者工具和小程序真机调试均有此现象
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
和畅
18人对此回答表示赞同
代码片段如下,供您参考!@Special
展开180回复分享发布于 6年前评论(0)
收起评论
-
Eva
17人对此回答表示赞同
懂了,真实尴尬
展开170回复分享发布于 6年前评论(0)
收起评论
-
Eva
13人对此回答表示赞同
现在人都喜欢abc来命名么
展开130回复分享发布于 6年前评论(0)
收起评论
-
Eren Lau
7人对此回答表示赞同
没人知道吗
展开70回复分享发布于 6年前评论(0)
收起评论
-
自作自受没人管
7人对此回答表示赞同
不然用什么举栗
展开70回复分享发布于 6年前评论(0)
收起评论
-
Emma王
3人对此回答表示赞同
展开30回复分享发布于 6年前评论(0)
收起评论
-
Gabriella
1人对此回答表示赞同
麻烦给个相关的代码片段,我们定位下问题
展开10回复分享发布于 6年前评论(0)
收起评论