Mint UIのloadmoreコンポーネントのピット:内部要素の頭部が一部遮られている(scroll了)
13172 ワード
フロントエンドではデータのページングロードのニーズによく遭遇します.mint-uiコンポーネントはloadmoreコンポーネントを提供します.
しかし、私が使っている間に、レイアウトとスタイルと論理を書いた後、私のmt-loadmoreラベルの頭はいつも親要素contentの上部に上がらず、paddingにも役に立たないという問題に遭遇しました.午後を改めてやっと原因を見つけた.
公式ドキュメントでは、データが戻ってきたら実行することを示しています.
私の問題は、ページリクエストに初めてアクセスした後も、この行のコードを実行し、再計算してスクロールしたことです.そのため、コンテンツの上部には一部が隠されています.
私のレイアウト、css、そして論理を共有します.
実は私のfirstGetメソッドはbottomLoadedメソッドと似ています.違いは最初のリクエスト、あるいは最初のページのデータが戻ってきたときにthis.$を実行しないことです.refs.loadmore.onBottomLoaded();彼の役割は、新しいデータを取得したdivの高さを再計算し、少し上にスクロールしてデータを漏らすことです.最初のリクエストが再計算されると、データが上に移動し、ブロックされます.あの親の要素のpaddingも彼を救うことができません~
しかし、私が使っている間に、レイアウトとスタイルと論理を書いた後、私のmt-loadmoreラベルの頭はいつも親要素contentの上部に上がらず、paddingにも役に立たないという問題に遭遇しました.午後を改めてやっと原因を見つけた.
公式ドキュメントでは、データが戻ってきたら実行することを示しています.
this.$refs.loadmore.onBottomLoaded();
私の問題は、ページリクエストに初めてアクセスした後も、この行のコードを実行し、再計算してスクロールしたことです.そのため、コンテンツの上部には一部が隠されています.
私のレイアウト、css、そして論理を共有します.
-
mounted firstGet :
mounted(){
this.firstGet();
},
method:{
firstGet(){
let url = this.baseUrl;
axios.get(url,{
params:{
...
}
}).then(res=>{
// res
// this.$refs.loadmore.onBottomLoaded(); , scroll , , !!! 。
// data ,
this.curPageNum = res.data.info.curPageNum;
this.maxPageNum = res.data.info.maxPageNum;
if (this.curPageNum >= this.maxPageNum || this.rtnList.length==0) {
this.allLoaded= true;
Toast({
message: " ",
duration: 1000
});
}else{
this.allLoaded= false;
}
}else{
}
}).catch(err=>{
})
},
loadBottom() {//
var that = this;
console.log(' loadbottom')
if (this.curPageNum>=this.maxPageNum) {
this.allLoaded = true;
Toast({
message: " ",
duration: 1000
});
this.$refs.loadmore.onBottomLoaded();
return;
}
this.curPageNum++;
let url = this.baseUrl;
axios.get(url,{
params:{
...
}
}).then(res=>{
that.curPageNum = res.data.info.curPageNum;
that.maxPageNum = res.data.info.maxPageNum;
if (that.curPageNum>=that.maxPageNum || this.rtnList.length==0) {
that.allLoaded= true;
Toast(" ");
}else{
that.allLoaded= false;
}
that.$refs.loadmore.onBottomLoaded();// mt-loadmore
}else{
that.nodata =true;
}
}).catch(err=>{
that.nodata =true;
})
}
}
実は私のfirstGetメソッドはbottomLoadedメソッドと似ています.違いは最初のリクエスト、あるいは最初のページのデータが戻ってきたときにthis.$を実行しないことです.refs.loadmore.onBottomLoaded();彼の役割は、新しいデータを取得したdivの高さを再計算し、少し上にスクロールしてデータを漏らすことです.最初のリクエストが再計算されると、データが上に移動し、ブロックされます.あの親の要素のpaddingも彼を救うことができません~