为什么我的this显示的是undefined不是null?跟着老师一步一步做的呀
var postsData = require('../../../data/post-data.js')
Page({
/**
* 页面的初始数据
*/
data: {
collected: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var postId = options.id
this.data.currentPostId = postId
var postData = postsData.postList[postId]
this.setData({
postData: postData
})
var postsCollected = wx.getStorageSync('postsCollected')
console.log(postsCollected)
if (postsCollected) {
var postCollected = postsCollected[postId]
if (postCollected) {
this.setData({
collected: postCollected
})
}
}
else {
var postsCollected = {}
postsCollected[postId] = false
wx.setStorageSync('postsCollected', postsCollected)
}
},
onCollectionTap: function () {
// wx.showToast({
// title: collected?'收藏成功':'取消成功',
// duration:1000,
// icon:'success'
// })
wx.showModal({
title: '收藏',
content: '是否收藏该文章',
showCancel: true,
cancelText: '不收藏',
confirmText: '收藏',
cancelColor: '#333',
confirmColor: '#405f80',
success: function (res) {
if (res.confirm) {
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 () {
}
})
正在回答
同学你好, 老师一开始以为同学是问为什么报错,所以给出了解决方案,换成箭头函数就可以了。
在断点调试时this是undefined而不是null,是因为调试版本的问题,调整到2.4.2之前的老版本,断点调试时this指向的就是null了。
如下,老师测试了2.4.0版本
同学可以测试理解下,祝学习愉快~
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星