- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
//删除明细
deleteDetail(e){
//e.currentTarget.id
//e.currentTarget.dataset.index
var that = this
var pojos
console.log("deleteDetail")
console.log(that.data)
console.log(that.data.pojos0.lenght)
for (var i = 0; i<that.data.pojos0.lenght;i++){
if (i != e.currentTarget.dataset.index){
pojos.push(that.data.pojos0[i])
}
}
that.setData({
pojos0:pojos
})
}
模拟与真机上都调试过:页面渲染是正常的,打印出来却是 undefined
那个Array(3)才是你调用console.log时pojos0的值。
你展开对象,控制台会重新读取这个对象,此时pojos0的值已经被改为undefined。
你自己看你代码中哪里修改了这个值。
没有再修改了呀,附代码如下:
//删除明细
deleteDetail(e){
//e.currentTarget.id
//e.currentTarget.dataset.index
var that = this
var pojos
console.log("deleteDetail")
console.log(that.data)
console.log(that.data.pojos0.lenght)
for (var i = 0; i<that.data.pojos0.lenght;i++){
if (i != e.currentTarget.dataset.index){
pojos.push(that.data.pojos0[i])
}
}
that.setData({
pojos0:pojos
})
}
你定义pojos却没有给值,此时pojos是undefined。
你根据原pojos的长度循环,却把长度length写成了lenght,取的不是数组长度,而是undefined,0<undefined为false,导致for代码块根本没有执行。
for代码块若是执行了你这段代码必然报错,因为undefined没有push方法。
最后你setData就是把pojos设置成undefined了(控制台也提示了)
解决:
var pojos 改为 var pojos = []
lenght改为length
开发工具有这个错误吗?