请教各位大佬
使用wx.showActionSheet弹出警示框提示用户删除, 点击确认后调试器报错:
"TypeError: Cannot read property 'openId' of undefined"
// 响应列表左划按钮事件
async listSlideButtonTap(e) {
// 得到触发事件的待办序号
const {
index
} = e.detail
// 根据序号获得待办对象
const listIndex = e.currentTarget.dataset.index
const list = this.data.lists[listIndex]
const db = await getApp().database()
// 处理删除按钮点击事件
if (index === 0) {
wx.showActionSheet({
alertText: '是否删除列表内所有待办',
itemColor: 'red',
itemList: ['确定'],
success(res) {
if (!res.cancel) {
if (res.tapIndex === 0) {
// 根据待办的 _id 找到并删除待办记录
db.collection(getApp().globalData.collection_list).where({
_id: list._id,
_openid: this.data.openId
}).remove()
// 根据待办的 _id 找到并删除待办记录
db.collection(getApp().globalData.collection_todo).where({
_openid: this.data.openId,
list_name: list.list_name
}).remove()
// 更新本地数据,快速更新显示
this.data.lists.splice(listIndex, 1)
this.setData({
lists: this.data.lists
})
}
}
}
})
}
},
去掉wx.showActionSheet函数后,就不报错了
// 响应列表左划按钮事件
async listSlideButtonTap(e) {
// 得到触发事件的待办序号
const {
index
} = e.detail
// 根据序号获得待办对象
const listIndex = e.currentTarget.dataset.index
const list = this.data.lists[listIndex]
const db = await getApp().database()
// 处理删除按钮点击事件
if (index === 0) {
// TODO: 增加选单动作,this.data.openId报错了???
// wx.showActionSheet({
// alertText: '是否删除列表内所有待办',
// itemColor: 'red',
// itemList: ['确定'],
// success(res) {
// if (!res.cancel) {
// if (res.tapIndex === 0) {
db.collection(getApp().globalData.collection_list).where({
_openid: this.data.openId,
_id: list._id
}).remove()
// 根据待办的 _id 找到并删除待办记录
db.collection(getApp().globalData.collection_todo).where({
_openid: this.data.openId,
list_name: list.list_name
}).remove()
// 更新本地数据,快速更新显示
this.data.lists.splice(listIndex, 1)
this.setData({
lists: this.data.lists
})
// }
// }
// }
// })
// 根据待办的 _id 找到并删除待办记录
}
},
wx.showActionSheet函数中不能使用this.data.xxx吗?
let that = this
百度了解一下this作用域
t一般最好在外部重新指向this,养成良好的习惯
问题已解决, 参考:
https://segmentfault.com/a/1190000021610643