0
点赞
收藏
分享

微信扫一扫

EA&UML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息


设定了监控点之后,小程序会取得最新位置,判断各个监控点的到达,离开情况并播放提示音。很多情况下,用户会希望这些信息可以保存起来以便将来使用。


这就是今天的主题:在小程序中保存设定信息。


API


位置闹铃使用微信小程序API中以下的数据缓存接口保存设定信息,本节内容来自微信小程序开发文档。


wx.setStorageSync(KEY,DATA)


将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

参数说明:

参数

类型

必填

说明

key

String


本地缓存中的指定的 key

data

Object/String


需要存储的内容


wx.getStorageSync(KEY)


从本地缓存中同步获取指定 key 对应的内容。


参数说明:

参数

类型

必填

说明

key

String


本地缓存中的指定的 key


代码实现


设定信息


保存操作的对象是Alarm数组,每个Alarm对象的结构如下:

EA&UML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息_数据

上半部分是数据成员,下半部分是prototype。需要保存的是数据成员部分。稍微注意一下原型信息,它列出了Alarm类的方法,表明这个数据是一个Alarm对象。


保存数据


只要一行代码。


wx.setStorageSync('alarms', this.globalData.alarms)


只是这么一个简单的操作,所有数据都可以被保存。严格地讲,表示状态的部分是不需要保存的,但是为了处理简单这里就不做区分了。


取出数据


如果是一般的情况,也是只要一行。


this.globalData.alarms = wx.getStorageSync('alarms') || []


这是取出地数据是这样的:


EA&UML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息_地_02


对象属性数据的部分和保存时是一样的;下面的prototype部分不一样的。原因应该是API不认识Alam类,所以保存和取出时只是作为一般对象来处理。


为了解决这个问题,位置闹铃在取出数据时进行了如下处理:


var that = this

   var alarm_array = wx.getStorageSync('alarms') || []

   alarm_array.forEach(function(alarm_data){

     that.globalData.alarms.push(new Alarm(alarm_data));

   })


首先作为一般的数据对象取出,然后根据数据对象创建Alarm对象。


参考资料


wx.setStorageSync


​​https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html#wxsetstoragesynckeydata​​


wx.getStorageSync


​​https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html#wxgetstoragesynckey​​


位置闹铃源代码


​​https://github.com/xueweiguo/alarmmap​​


写在文章的最后


阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】


EA&UML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息_闹_03


举报

相关推荐

0 条评论