deleteClick:function(e){
var shop=this.data.shoppingData
wx.showModal({
title: '提示',
content: '是否选择删除所有选中的图片?',
success(res){
if(res.confirm){
for(var i=0;i<shop.length;i++){
if(shop[i].sel==true){
shop.splice(i,1)
i=i-1
continue
}
for(var j=0;j<shop[i].commodity.length;j++){
if(shop[i].commodity[j].sel==true){
shop[i].commodity.splice(j,1)
j=j-1
}
}
}
}
}
})
this.setData({
shoppingData:shop
})
console.log(this.data.shoppingData)
}
如代码所示,我想进行删除图片的操作。当我把其中的逻辑代码放在success函数中时,触发事件后视图层内的图片并没有被删除,返回的信息如图一,视图层如图三。把代码放在wx.showModal之外时不会出现这种问题,同样的操作下返回信息和视图层如图二图四。请大神指教!是API本身的问题吗?
我理解是这样的:
this.setData({ shoppingData:shop })
上面这个代码在你点击确定之前就已经执行了,但是你点击确定的时候这个就不会再执行了,就是是页面view不会刷新数据,你需要确定之后再执行上面的代码
而在第二种情况中,我不需要点击确定就可以执行函数,输出信息中数组消失,而且length也为0
api是异步方法~~~你要是想这么做的话 就得写在success里面
this.setData()和wx.showModal()是异步执行的, 两个差不多同时执行
把this.setData({ shoppingData:shop })改一下,放到success中
输出看了么?