起因,我们在小程序中经常会设置或更改 data 中的变量 (我这里只考虑每次只修改一个变量的情况)
代码是这样写的
this.setData({
currentIndex:e.detail.currentIndex
})
基本上每个方法中都有改变变量的值
这个代码要三行,看着不爽,于是我就想在 app.js中定义一个公用的函数 因为每个页面上都有 app=getApp()
于是在app.js下就设计了一个函数
setDataOne(paramkey, value, _this){
_this.setData({
paramkey:value
})
}
之后就在页中这样调用
app.setDataOne("currentIndex",e.detail.currentIndex,this);
一行就完成了,
咋一看,代码好像没有问题,但是一测试,就有问题了,
问题的原因在于,js的对象的 键,不支持使用 字符串来传参 所以这个 “currentIndex” 当键 传过去是不行的
豆办上找到这个文章可以了解下,跟本文关系不太大 https://www.douban.com/note/625698916/
我的解决办法是 修改app.setDataOne 这个函数
代码如下:
setDataOne(paramkey,value,_this){
let obj={};
obj[paramkey] = value;
_this.setData(obj)
}
这样就解决问题了,当然解决办法还有很多,我只记录下我的解决过程