快應(yīng)用 頁(yè)面路由

2020-08-10 13:41 更新

接口聲明

無需聲明

導(dǎo)入模塊

import router from '@system.router' 或 const router = require('@system.router') 

接口定義

router.push(OBJECT)

跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面

參數(shù):

參數(shù) 類型 必填 說明
uri String 要跳轉(zhuǎn)到的 uri,可以是下面的格式:
  1. 包含 schema 的完整 uri;目前支持的 schema 有tel,sms 和mailto,例如 tel:10086。
  2. 以‘/’開頭的應(yīng)用內(nèi)頁(yè)面的路徑;例:/about。
  3. 以非‘/’開頭的應(yīng)用內(nèi)頁(yè)面的名稱;例:About。
  4. 特殊的,如果 uri 的值是"/",則跳轉(zhuǎn)到 path 為"/"的頁(yè),沒有則跳轉(zhuǎn)到首頁(yè)
支持包含 schema 的完整 uri。對(duì)于帶有 schema 的 uri,處理流程如下:
  1. 查找 app 下所有 page 的 filter 設(shè)置來選擇合適的page處理請(qǐng)求(參見 manifest文件)
  2. 如果沒有合適的page能夠處理請(qǐng)求,會(huì)使用默認(rèn)策略來處理請(qǐng)求。目前默認(rèn)策略支持對(duì) http、https、internal 這幾種 schema 的處理
  3. 如果默認(rèn)策略也不能處理請(qǐng)求,會(huì)嘗試使用系統(tǒng)中的應(yīng)用來處理請(qǐng)求
  4. 如果沒有系統(tǒng)應(yīng)用可以處理請(qǐng)求,會(huì)拋棄請(qǐng)求
默認(rèn)策略的處理邏輯:
  1. 如果 schema 是 http/https,會(huì)用內(nèi)置的 web 頁(yè)面打開網(wǎng)頁(yè)
  2. 如果 schema 是 internal( 參見 文件組織 ),會(huì)根據(jù) uri 的文件擴(kuò)展名來確定文件類型,再調(diào)用系統(tǒng)中的應(yīng)用打開文件
  3. 如果 schema 是 hap ( 參見 hap鏈接 ),會(huì)跳轉(zhuǎn)到 hap鏈接 所支持的類型
params Object 跳轉(zhuǎn)時(shí)需要傳遞的數(shù)據(jù),參數(shù)可以在頁(yè)面中通過this.param1的方式使用,param1為json中的參數(shù)名,param1對(duì)應(yīng)的值會(huì)統(tǒng)一轉(zhuǎn)換為String類型


params 參數(shù):

參數(shù) 類型 必填 說明
body1040+ String 跳轉(zhuǎn)時(shí)短信發(fā)送頁(yè)面時(shí)攜帶的短信內(nèi)容。
___PARAMLAUNCH_FLAG\__1050+ String 快應(yīng)用啟動(dòng)參數(shù),目前僅支持"clearTask",在啟動(dòng)目標(biāo)頁(yè)面時(shí)會(huì)清除除此頁(yè)面外的其他頁(yè)面。詳見 頁(yè)面啟動(dòng)模式
___PARAMPAGE_ANIMATION\__1070+ Object 頁(yè)面跳轉(zhuǎn)時(shí)動(dòng)畫類型
___PARAMPAGE_ANIMATION\__ 參數(shù):
頁(yè)面動(dòng)作 動(dòng)畫類型 必填 說明
openEnter String 打開進(jìn)入當(dāng)前頁(yè)時(shí)當(dāng)前頁(yè)動(dòng)畫,可選值 slide, none,默認(rèn)為slide
closeEnter String 關(guān)閉返回當(dāng)前頁(yè)時(shí)當(dāng)前頁(yè)動(dòng)畫,可選值 slide, none,默認(rèn)為slide
openExit String 打開下一頁(yè),退出當(dāng)前頁(yè)時(shí)當(dāng)前頁(yè)動(dòng)畫,可選值 slide, none,默認(rèn)為slide
closeExit String 返回上一頁(yè),退出當(dāng)前頁(yè)時(shí)當(dāng)前頁(yè)動(dòng)畫,可選值 slide, none,默認(rèn)為slide

slide模式在各動(dòng)作下的動(dòng)畫變化詳情如下:

頁(yè)面動(dòng)作 動(dòng)畫變化 動(dòng)畫時(shí)長(zhǎng)
openEnter x from 100%~0 300ms
closeEnter x from -25%~0, alpha 0.6~1.0 300ms
openExit x from 0~-25%, alpha 1.0~0.6 300ms
closeExit x from 0~100% 300ms

示例:

  • 喚醒電話
    router.push({
      uri: 'tel:10086'
    })
  • 發(fā)送短信
    router.push({
      uri: 'sms:10086',
      params: {
        body: 'message'
      }
    })
  • 應(yīng)用內(nèi)切換頁(yè)面
    • path 切換
      router.push({
        uri: '/about',
        params: {
          testId: '1'
        }
      })
    • name 切換
      // open page by name
      router.push({
        uri: 'About',
        params: {
          testId: '1'
        }
      })
    • 切換頁(yè)面并清除其他頁(yè)面
      router.push({
        uri: '/about',
        params: {
          ___PARAM_LAUNCH_FLAG___: 'clearTask'
        }
      })
  • 打開網(wǎng)頁(yè)
    router.push({
      uri: 'http://www.example.com'
    })
  • 打開原生應(yīng)用
    router.push({
      uri: 'internal://cache/example.apk'
    })
  • 打開另一個(gè)快應(yīng)用
    router.push({
      uri: 'hap://app/com.example.quickapp/page?key=value'
    })
  • 打開 wifi 設(shè)置頁(yè)面
    router.push({
      uri: 'hap://settings/wlan_manager'
    })
  • 配置跳轉(zhuǎn)動(dòng)畫模式
    router.push({
       uri: '/about',
       params: {
          ___PARAM_PAGE_ANIMATION___: {
             openEnter:`none`,
             closeEnter:`slide`,
             openExit:`slide`,
             closeExit:`slide`
          }
     }
    })

router.replace(OBJECT)

跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面,當(dāng)前頁(yè)面無法返回

參數(shù):

參數(shù) 類型 必填 說明
uri String 要跳轉(zhuǎn)到的 uri,可以是下面的格式:
  1. 以"/"開頭的應(yīng)用內(nèi)頁(yè)面的路徑;例:/about。
  2. 以非"/"開頭的應(yīng)用內(nèi)頁(yè)面的名稱;例:About。
  3. 特殊的,如果 uri 的值是"/",則跳轉(zhuǎn)到 path 為"/"的頁(yè),沒有則跳轉(zhuǎn)到首頁(yè)
params Object 跳轉(zhuǎn)時(shí)需要傳遞的數(shù)據(jù),參數(shù)可以在頁(yè)面中通過this.param1的方式使用,param1 為 json 中的參數(shù)名,param1 對(duì)應(yīng)的值會(huì)統(tǒng)一轉(zhuǎn)換為 String 類型

示例:

router.replace({
  uri: '/test',
  params: {
    testId: '1'
  }
})

router.back(OBJECT)

返回指定頁(yè)面

參數(shù):

參數(shù) 類型 必填 說明
path '1020+' String 返回目標(biāo)頁(yè)面的路徑,可以是以下幾種取值:
  1. 不傳該參數(shù),返回上一頁(yè)面
  2. 以"/"開頭的應(yīng)用內(nèi)已打開頁(yè)面的路徑;例:/about。
  3. 特殊的,如果 path 的值是"/",則跳轉(zhuǎn)到頁(yè)面名稱為"/"的頁(yè),沒有則跳轉(zhuǎn)到首頁(yè)
注意點(diǎn):
  1. path 需要是以"/"開頭的當(dāng)前應(yīng)用已經(jīng)打開的頁(yè)面路徑,否則均視為無效參數(shù),返回上一頁(yè)面
  2. 若根據(jù) path 未匹配到已經(jīng)打開的頁(yè)面,返回上一頁(yè)面
  3. 若根據(jù) path 參數(shù)匹配到多個(gè)頁(yè)面,返回至最后打開的頁(yè)面

示例:

// A頁(yè)面, open page by name
router.push({
  uri: 'B'
})
// B頁(yè)面, open page by name
router.push({
  uri: 'C'
})
// C頁(yè)面, open page by name
router.push({
  uri: 'D'
})
// D頁(yè)面, open page by name
router.push({
  uri: 'E'
})
// E頁(yè)面不傳入頁(yè)面路徑,返回至D頁(yè)面
router.back()
// D頁(yè)面不傳入頁(yè)面名稱,返回至C頁(yè)面
router.back()
// C頁(yè)面?zhèn)魅腠?yè)面路徑,返回至A頁(yè)面
router.back({
  path: '/A'
})

router.clear()

清空所有歷史頁(yè)面記錄,僅保留當(dāng)前頁(yè)面

參數(shù):

示例:

router.clear()

router.getLength()

獲取當(dāng)前頁(yè)面棧的頁(yè)面數(shù)量

返回值:

類型 說明
Number 頁(yè)面數(shù)量

示例:

var length = router.getLength()
console.log(`page's length = ${length}`)

router.getState()

獲取當(dāng)前頁(yè)面狀態(tài)

返回參數(shù):

參數(shù)名 類型 說明
index Number 當(dāng)前頁(yè)面在頁(yè)面棧中的位置
name String 當(dāng)前頁(yè)面的名稱
path String 當(dāng)前頁(yè)面的路徑

示例:

var page = router.getState()
console.log(`page index = ${page.index}`)
console.log(`page name = ${page.name}`)
console.log(`page path = ${page.path}`)

router.getPages()

獲取當(dāng)前頁(yè)面棧列表

返回值:

類型 說明
Array 頁(yè)面棧列表。數(shù)組每一項(xiàng)都為 Object 類型。

數(shù)組每一項(xiàng)構(gòu)成:

字段 類型 說明
name String 頁(yè)面的名稱
path String 頁(yè)面的路徑

示例:

var stacks = router.getPages();
console.log("棧底頁(yè)面名稱為:", stacks[0].name); // 如 list、detail 等
console.log("棧底頁(yè)面路徑為:", stacks[0].path); // 如 /list、/detail、/home/preview

后臺(tái)運(yùn)行限制

禁止使用。 后臺(tái)運(yùn)行詳細(xì)用法參見 后臺(tái)運(yùn)行 腳本。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)