framework7框架中tab頁面下拉刷新方案
- 2019 年 10 月 6 日
- 筆記
最近在使用framework7框架開發web app,發現在tab頁面中直接定義多個ptr-content會導致異常。最後綁定用戶點擊tab的事件,動態解綁/綁定ptr後解決。
在HTML中這樣定義ptr,只需在tab-1(首屏)中設置ptr-content即可,用戶切換tab時再去把ptr-content class賦值到對應的tab中。
<div class="tabs"> <div id="tab-1" class="page-content tab tab-active ptr-content"> <div class="ptr-preloader"> <div class="preloader"></div> <div class="ptr-arrow"></div> </div> ...... </div> <div id="tab-2" class="page-content tab"> <div class="ptr-preloader"> <div class="preloader"></div> <div class="ptr-arrow"></div> </div> ...... </div> <div id="tab-3" class="page-content tab"> <div class="ptr-preloader"> <div class="preloader"></div> <div class="ptr-arrow"></div> </div> ...... </div> .... </div>
JS程式碼這樣設置,注意我這裡由於兼容性原因沒有把Dom7定義為$$
,如果你定義了Dom7為$$
,直接把Dom7改為$$
即可。
另外特別注意的是當用戶切換tab後,必須先調用一次ptr.done()來讓當前的refreshing停止,否則在refreshing時切換會出現奇怪的問題。
Dom7('#tab-1').on('ptr:refresh', function (e) { //Do something app.ptr.done(); }); Dom7('#tab-2').on('ptr:refresh', function (e) { //Do something app.ptr.done(); }); Dom7('#tab-3').on('ptr:refresh', function (e) { //Do something app.ptr.done(); }); Dom7('a[href="#tab-1"]').on('click', function (e) { app.ptr.done(); app.ptr.destroy('.ptr-content'); Dom7('.ptr-content').removeClass("ptr-content"); Dom7('#tab-1').addClass("ptr-content"); app.ptr.create('#tab-1'); }); Dom7('a[href="#tab-2"]').on('click', function (e) { app.ptr.done(); app.ptr.destroy('.ptr-content'); Dom7('.ptr-content').removeClass("ptr-content"); Dom7('#tab-2').addClass("ptr-content"); app.ptr.create('#tab-2'); }); Dom7('a[href="#tab-3"]').on('click', function (e) { app.ptr.done(); app.ptr.destroy('.ptr-content'); Dom7('.ptr-content').removeClass("ptr-content"); Dom7('#tab-3').addClass("ptr-content"); app.ptr.create('#tab-3'); });
注意我這裡沒有考慮使用API切換tab的情況,如果使用API,還需要修改一下綁定的程式碼。