老师为什么我一点进去就是收藏状态呀。。

老师为什么我一点进去就是收藏状态呀。。

btw我用ctrl+f把该页面所有的postCollected都替换成了collected


http://img1.sycdn.imooc.com//climg/5df0c692090c408e10550652.jpg


代码如下:

post-detail.wxml

<!-- 原则:先静后动,先样式后数据 -->
<view class="container">
<image class="head-image" src="{{headImgSrc}}"></image>
<view class="author-date">
<image class="avatar" src="{{avatar}}"></image>
<text class="author">{{author}}</text>
<text class="const-text">发表于</text>
<text class="date">{{dateTime}}</text>
</view>
<text class="title">{{title}}</text>
<view class="tool">
<view class="circle-img">
<image wx:if="{{collected}}" bind:tap="onCollectionTap" src="/images/icon/collection.png"></image>
<image wx:if="{{!collected}}" bind:tap="onCollectionTap" src="/images/icon/collection-anti.png"></image>
<image bind:tap="onShareTap" class="share-img" src="/images/icon/share.png"></image>
</view>
<view class="horizon"></view>
</view>
<text class="detail">{{detail}}</text>
</view>

posts.js

// pages/posts/posts.js

//小程序中最基本的导入语法:
var postsData = require('../../data/posts-data.js')

Page({

// 页面的初始数据
data: {
},

// 生命周期函数--监听页面加载
onLoad: function (options) {
this.setData({
posts_key: postsData.postList
});
// this.setData({posts_content});
//console.log('onload')
},

//点击新闻列表中的item触发的事件
onPostTap:function(event){
//console.log(event)
var postId = event.currentTarget.dataset.postid
wx.navigateTo({
url:'post-detail/post-detail?id='+postId,
})
}

})

post-detail.js

var postsData = require('../../../data/posts-data.js')

// pages/posts/post-detail/post-detail.js
Page({

/**
   * 页面的初始数据
   */
data: {
collected:true
},

/**
   * 生命周期函数--监听页面加载
   */
onLoad: function (options) {
var postId = options.id
this.data.currentPostId = postId

var postData = postsData.postList[postId]
this.setData({
//postData:postData 可以省略成下行
...postData
})

var postsCollected = wx.getStorageSync('postsCollected')
//先判断有没有缓存
if(postsCollected){
var collected = postsCollected[postId]
if (collected){
this.setData({
collected:collected
})
}
}
else{
var postsCollected = {}
postsCollected[postId] = false
wx.setStorageSync('postsCollected',postsCollected)
}
},

// 点击收藏按钮收藏文章
onCollectionTap:function(){
var postsCollected = wx.getStorageSync('postsCollected')
var collected = postsCollected[this.data.currentPostId]
collected = !collected
postsCollected[this.data.currentPostId] = collected
wx.setStorageSync('postsCollected',postsCollected)
this.setData({collected})
},

//点击分享按钮删除缓存
onShareTap:function(){
},

/**
   * 生命周期函数--监听页面初次渲染完成
   */
onReady: function () {

},

/**
   * 生命周期函数--监听页面显示
   */
onShow: function () {

},

/**
   * 生命周期函数--监听页面隐藏
   */
onHide: function () {

},

/**
   * 生命周期函数--监听页面卸载
   */
onUnload: function () {
},

/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
onPullDownRefresh: function () {

},

/**
   * 页面上拉触底事件的处理函数
   */
onReachBottom: function () {

},

/**
   * 用户点击右上角分享
   */
onShareAppMessage: function () {

}
})


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这边将代码注释掉已经不是缓存状态了:

http://img1.sycdn.imooc.com//climg/5df196c709f6e03311760311.jpg

建议清除缓存重新编译试试:

http://img1.sycdn.imooc.com//climg/5df196f009c8fba301070064.jpg

http://img1.sycdn.imooc.com//climg/5df196fb09b53b2f01670302.jpg

祝学习愉快!

好帮手慕星星 2019-12-11 19:39:58

同学你好,post-detail.js文件中初始化collected属性为true了,所以一进去就是收藏的状态,可以注释掉:

http://img1.sycdn.imooc.com//climg/5df0d56309bef01103280149.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 hyperse #1
    注释起来点进去还是已经收藏状态
    2019-12-11 20:32:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师