夜光序言:
吾挥兵摆一门星罗棋布,征战八荒,为尔争得万里繁华。
正文:
以道御术 / 以术识道
// pages/news/news-detail/news-detail.js
var newsData = require("../../data/newsdata.js")
Page({
/**
* 页面的初始数据
*/
data: {
// detailData:[] 这个初始化,我们也先不要
},
/**
* 生命周期函数--监听页面加载
* 夜光:这个生命周期函数用的情况比较多
*/
onLoad: function (options) {
// console.log(options.newsid)
console.log();
this.setData(
// 这个不行嗯~
// detailData:newsData.initData[options.newsid]
newsData.initData[options.newsid]
)
this.setData({
newsid: options.newsid
})
//测试本地存储
// wx.setStorageSync("key", "data") 我先把这句代码注释掉,接下来
// console.log(wx.getStorageSync("key"));
//收藏存储数据格式
//var newsCollect={
// 0:true
// 1:flase
//}
//第一次进入的时候,判断是否存在本地存储以及是否收藏,这里
var newsCollect = wx.getStorageSync("newsCollect");
//之后我们判断
//如果newsCollect存在,则代表以前收藏过或者取消过收藏
if (newsCollect){
var newCollect = newsCollect[options.newsid]
this.setData({
collected: newCollect
})
}else{
//第一次进入,根本不存在数据
var newsCollect = {}; //先定义一个空对象
//我把当前唯一id放到newsCollect对象中,默认指定false
newsCollect[options.newsid] = false; //这里,我们需要对对象和数组之间的关系有较为深刻的认识
//放到本地存储之中去
wx.setStorageSync("newsCollect", newsCollect)
}
},
//下面,我们写一个方法
collectTap:function(event){
//我们一般写方法,都会先在控制台随便打印点东西,看看是否有问题
// console.log("1")
// console.log(this.data.newsid); //打印看一下 有了效果,我们就可以干活了
// this.data.newsid
//既然如此,我们在这个里面就要存储了
//注意:newsCollect是所有数据的集合
var newsCollect = wx.getStorageSync("newsCollect"); //这里,我们数据存储的格式就是newsCollect
//这里需要提醒一下,第一次进来的时候就要判断数据是否存在
//但是这里并没有写,这里是进来之后的逻辑,这需要注意一下
//下面我们再定义一个一条的
// var newCollect = newsCollect
var newCollect = newsCollect[this.data.newsid];
// console.log(newCollect)
//这里是什么逻辑,如果是收藏的则被取消,如果未被收藏则收藏
newCollect = !newCollect; //反正取反么,true or false
//更新到本地存储中
newsCollect[this.data.newsid] = newCollect;
wx.setStorageSync("newsCollect", newsCollect); //newsCollect把这个集合的整体再放进去
//后台数据是更新了,那么前端的视图层如何更新呢
//下面就是渲染到,并更新视图
this.setData({
//暂时不知道,因为我们根本不知道视图是怎么改变的
collected: newsCollect[this.data.newsid]
})
}
})