夜光带你走进 微信小程序开发(二十七)擅长的领域

夜光序言:

吾雕玉刻一位如花美眷,绝艺倾城,为尔忆得昔日旧约。

 

 

 

 
 
正文:
 
                                              以道御术 / 以术识道

// 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]
      })

      wx.showToast({
        title: newsCollect[this.data.newsid]?'收藏成功':"取消收藏",
        icon: 'success',
        duration: 2000
      })

    }

  

})

扫描二维码关注公众号,回复: 10786221 查看本文章

发布了1529 篇原创文章 · 获赞 305 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/104796837
今日推荐