[LayaAir 2.0]list方法onSelect失效

情况是这样的:
使用list做图片选择栏,代码如下:
    onClickChooseIcon() {

this.imgList.visible = true;
this.imgListBg.visible = true;
this.reqImage = this.iconImg;
this.imgList.vScrollBarSkin = '';
this.imgList.selectEnable = true;
this.imgList.array = listArr;
this.imgList.renderHandler = new Laya.Handler(this, this.onRender);
this.imgList.selectHandler = new Laya.Handler(this, this.onSelect);

}

onSelect(index) {
this.reqImage.skin = listArr[index].img.skin;
if (defaultImgs[this.reqImage.skin]) {
this.reqImage["guid"] = defaultImgs[this.reqImage.skin];
}
this.imgList.visible = false;
this.imgListBg.visible = false;
}

onClickChooseIcon函数触发后,会显示图片选择栏(list),点击其中某个图片后,进入onSelect函数,执行后,选择栏消失,一切正常。
第二次触发onClickChooseIcon函数,显示图片选择栏(list),点击其中某个图片后,无任何反应,断点调试发现不会进入onSelect函数,这是什么问题导致的?
list1.png list2.png
已邀请:

群主爸爸

赞同来自:

在laya交流群中提出此问题,群友 天堂鸟给出了答案:
“onSelect必需在selectedIndex发生变动后才会触发,你可以简单点的处理,就是在onSlect函数中把imgList.selectedIndex =-1” ,
 
清楚的说明了我的问题原因,因为我一直点选同一张图片,index相同没有变化,所以导致没有触发onSelect函数,这里贴上API文档说明:

list3.png

 
 
另外补充一个小技巧,设置selectedIndex =-1后,由于此时index也发生了改变(变成-1),会导致触发onSelect函数,此时可以在onSelect函数中加上代码:
if (this.imgList.selectedIndex === -1) {
return;
}

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作