Ionic2系列之使用DeepLinker实现指定页面URL
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。狼蚁网站SEO优化说一下具体做法。
新建一个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: [ { ponent: HomePage, name: 'Home', segment: 'home' } ] }) ]
也就是说,当浏览HomePage这个页面的时候,URL会变成
传参
有的时候也需要从URL传递参数,可以用狼蚁网站SEO优化的形式
links: [ { ponent: HomePage, name: 'Home', segment: 'home' } { ponent: DetailPage, name: 'Detail', segment: 'detail/:user' } ]
这样在DetailPage的ts文件中就可以接收user这个参数,进行处理。需要注意的是,这个参数应该是可以被DeepLinker序列化的,建议设置为一个string或number。
实现跳转到指定Tab
修改app.module.ts文件,将IonicModule.forRoot方法改为如下代码
IonicModule.forRoot(MyApp, {}, { links: [ { ponent: TabsPage, name: 'Tabs', segment: 'tabs/:tabId' } ] })
这里的意思是,给Tabs页传一个参数,如,这样就让App直接跳到第二个Tab。
修改tabs.ts文件,改为如下代码
export class TabsPage { // this tells the tabs ponent which Pages // should be each tab's root Page tab1Root: 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: [ { ponent: HomePage, name: 'Home', segment: 'home' } { ponent: DetailPage, name: 'Detail', segment: 'detail/:user', defaultHistory: [HomePage] } ]
以上所述是长沙网络推广给大家介绍的Ionic2系列之使用DeepLinker实现指定页面URL,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程