关于在watch中监控scrollY(new)的问题
来源:5-6 listview 基础组件的开发和应用-右侧快速入口实现(2)
milaiduoduo
2017-11-23
scrollY(newY){
const listHeight = this.listHeight;
if (newY > 0) {
this.currentIndex = 0;
return;
}
for (let i = 0; i < listHeight.length - 1; i++) {
let height1 = listHeight[i];
let height2 = listHeight[i + 1];
if (-newY >= height1 && -newY < height2) {
this.currentIndex = i;
return;
}
}
this.currentIndex = listHeight.length - 2;
}以上这段可以不用watch来监控,因为这段完全可以写在 scroll暴露出来的scroll事件中,如下。所以说,这只是写法不同,还是写在watch中,另有原因?
scroll(pos){
this.scrollY = pos.y;
this._getNewIndexInleftList();
},
_getNewIndexInleftList(){
const listHeight = this.listHeight;
let newY = this.scrollY;
if (newY > 0) {
this.currentIndex = 0;
return;
}
for (let i = 0; i < listHeight.length - 1; i++) {
let height1 = listHeight[i];
let height2 = listHeight[i + 1];
if (-newY >= height1 && -newY < height2) {
this.currentIndex = i;
return;
}
}
this.currentIndex = listHeight.length - 2;
}写回答
1回答
-
ustbhuangyi
2017-11-23
scollY 的改动并不只是在滚动的时候,点右侧列表也会有,而 scrollY 的改变会影响视图,所以从数据驱动的角度来说, watch 它的变化更合理
00
相似问题