1. 程式人生 > >ionic3實現三種回頂部操作

ionic3實現三種回頂部操作

第一種

用id獲取模板中content中最高的那個元素,給元素設定id:

id="topest"

然後觸發方法:

toView(){
    let element = document.getElementById("topest");
    if(element){
      element.scrollIntoView();
}

這也就是我們常說的錨點,這種方法是直接跳到該元素的,體驗不是很好,不要用。

第二種

首先匯入:

import { Content } from 'ionic-angular';

然後獲取content的例項:

@ViewChild(Content)
content: Content
;

然後呼叫content的scrollToTop()

toTop() {
    this.content.scrollToTop();
}

這種是滾動上去的。
然而,當content設定為fullscreen時,header會覆蓋一部分(不會完全滑動上去),如圖:
這裡寫圖片描述

所以

第三種方法:

滾動到指定座標位置,三個引數依次為座標x,y,滾動時間(毫秒單位)。

scrollTo(){
    this.content.scrollTo(0, 0, 300)
}

第二種的scrollToTop(),還有這個scrollTo(0, 0, 300)都是content的方法。更多詳情請參考官網。我開始學的時候,就看到它是content標籤,其他就不管了。後來再回去看時,發現還有很多有用的內容。這再次告訴我們,多看官網是沒錯的。

以上的方法在哪裡觸發呢,常見的就是用個FabButton,另一種就是雙擊頂部(如微信朋友圈)

翻譯得不是很好哈。
然而FabButton一直放在那裡,也不是很好,下面實現滾動到底部時顯示,回到頂部後隱藏:
給FabButton新增:

*ngIf="top"

給content新增事件,當滾動時觸發:(ionScroll)=”check()”
在ts中,top=false;
check():content有個屬性scrollTop,為可見檢視的最高元素到content頂部的距離(可理解為向下滑動的距離),滑動時,檢查它是否大於指定距離,如果為true,則設定top為true,以顯示FabButton。

check(){
      if(this.content.scrollTop>400){
        this.top = true;
      }else{
        this.top = false;
      }
      this.cd.detectChanges();
  }

但是,ng並沒有智慧到一有資料變更就能自動檢測到的,有些特殊情況,並沒有觸發ng的變更檢測。所以當你已經滑下來了,頁面是沒有顯示FabButton的。
解決:手動觸發變更檢測,以渲染模板
首先,在ts匯入:

import { Component, ChangeDetectorRef } from '@angular/core';

然後在建構函式裡注入:

constructor(private cd: ChangeDetectorRef)

最終在更新變數後,手動呼叫程式碼,強制頁面檢查重新整理即可:

this.cd.detectChanges();

然而,button突變式的顯示與消失,也不好,哈哈。可以為其新增進場與離場動畫哦。

雙擊回頂部

這個沒什麼好說的,就像微信朋友圈那樣,在title繫結雙擊事件(dblclick)就可以了

末學菜鳥一隻,如有錯誤請指出,不勝感激。