国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Ionic2系列之使用DeepLinker實現指定頁面URL

2019-11-19 18:54:04
字體:
來源:轉載
供稿:網友

Ionic2使用了近似原生App的頁面導航方式,并不支持Angular2的路由。這種方式在開發本地App的時候比較方便,但如果要用來開發純Web頁面就有點問題了,這種情況下Angular2的router可以提供更靈活的配置。比如在首頁是一個Tabs頁面的情況下,如何控制用戶看到的第一項Tab?默認情況下都是會導航到第一個Tab,而且地址欄的URL并不會跟隨頁面的切換而變化。好在Ionic2提供了一種類似路由的DeepLinker功能,可以實現以上目的。

DeepLinker與NavController一起工作,但是用戶基本不會直接與這個東西打交道。只有用戶需要對URL進行處理的時候才需要配置這個。使用DeepLinker后,如果NavController push了一個新的頁面,DeepLinker會在配置中尋找匹配的URL設置并更新URL。

我們的需求場景是這樣的,在微信公眾號的菜單欄有n個菜單,點擊不同的菜單,需要直接導航到我們頁面對應的Tab上,而不是讓用戶再去選擇Tab。下面說一下具體做法。

首先新建一個Ionic2項目。目前最新的CLI已經升級到了2.1.12,ionic-angular升級到了RC3,強烈建議更新。使用以下命令來創建一個Tabs模板的項目:

ionic start TabsDemo tabs --v2

默認會建立有三個Tab頁的項目。主要有4個頁面,一個Tabs是主頁面,其他三個Tab頁分別是home,about,contact。

基本用法

DeepLinker是在IonicModule.forRoot方法中使用,作為第三個參數:

imports: [IonicModule.forRoot(MyApp, {}, {links: []})]

數組里的對象是DeepLinkerConfig,配置了URL和頁面的匹配關系,一般來說是這樣子的:

imports: [IonicModule.forRoot(MyApp, {}, {links: [{ component: HomePage, name: 'Home', segment: 'home' }]})]

也就是說,當瀏覽HomePage這個頁面的時候,URL會變成http://examplesite/#/home/home

傳參

有的時候也需要從URL傳遞參數,可以用下面的形式:

links: [{ component: HomePage, name: 'Home', segment: 'home' }{ component: DetailPage, name: 'Detail', segment: 'detail/:user' }]

這樣在DetailPage的ts文件中就可以接收user這個參數,進行處理。需要注意的是,這個參數應該是可以被DeepLinker序列化的,因此建議設置為一個string或number。

實現跳轉到指定Tab

修改app.module.ts文件,將IonicModule.forRoot方法改為如下代碼:

IonicModule.forRoot(MyApp, {}, {links: [{ component: TabsPage, name: 'Tabs', segment: 'tabs/:tabId' }]})

這里的意思是,給Tabs頁傳一個參數,如http://examplesite/#/tabs/1,這樣就讓App直接跳到第二個Tab。

修改tabs.ts文件,改為如下代碼:

export class TabsPage {// this tells the tabs component which Pages// should be each tab's root Pagetab1Root: any = HomePage;tab2Root: any = AboutPage;tab3Root: any = ContactPage;public tabId: number;public selectTabIndex: number;constructor(public params: NavParams) {this.tabId = params.get("tabId");if(this.tabId != undefined || this.tabId !=null){this.selectTabIndex = this.tabId;}}}

添加了兩個變量,然后通過NavParams取得傳遞過來的參數并賦值給selectTabIndex。

修改tabs.html,給Tabs組件添加一個綁定:

<ion-tabs selectedIndex={{selectTabIndex}}>

運行ionic serve命令,會自動打開http://localhost:8100/地址,現在打開一個新窗口,輸入http://localhost:8100/#/tabs/1,OK,直接跳到第二個Tab了。打完收工。

默認歷史

還有一種情況,如果從其他頁面直接導航到內部的頁面,當點擊返回的時候,該返回哪個頁面呢?比如從推送通知進到新聞詳情頁面,當點擊返回的時候,應該返回首頁。所以Ionic2提供了defaultHistory參數,如果頁面歷史堆棧中不存在歷史頁面的時候,就會返回到這個頁面。用法如下:

links: [{ component: HomePage, name: 'Home', segment: 'home' }{ component: DetailPage, name: 'Detail', segment: 'detail/:user', defaultHistory: [HomePage] }]

以上所述是小編給大家介紹的Ionic2系列之使用DeepLinker實現指定頁面URL,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和硕县| 临沂市| 普定县| 崇阳县| 青神县| 正蓝旗| 杂多县| 砚山县| 筠连县| 宁河县| 油尖旺区| 海南省| 兖州市| 武功县| 嫩江县| 靖西县| 获嘉县| 南川市| 固安县| 年辖:市辖区| 云和县| 盐亭县| 鄂托克前旗| 苍南县| 神农架林区| 绥滨县| 乡宁县| 黎城县| 安丘市| 瑞丽市| 开封县| 丹江口市| 康平县| 新昌县| 通化市| 金门县| 杭锦后旗| 洛隆县| 玉溪市| 东明县| 仪陇县|