Ionic2系列之使用DeepLinker实现指定页面URL_javascript技巧

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/

传参

有的时候也需要从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/,这样就让App直接跳到第二个Tab。

修改tabs.ts文件,改为如下代码:

export class TabsPage {
// this tells the tabs component 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: [
{ component: HomePage, name: 'Home', segment: 'home' }
{ component: DetailPage, name: 'Detail', segment: 'detail/:user', defaultHistory: [HomePage] }
]

以上所述是小编给大家介绍的Ionic2系列之使用DeepLinker实现指定页面URL,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ionic2
deeplinker
ionic2 deeplinker、deeplinker、ionic2 deeplink、ionic deeplink、ionic javascript,以便于您获取更多的相关知识。

时间: 2024-09-25 00:36:29

Ionic2系列之使用DeepLinker实现指定页面URL_javascript技巧的相关文章

基于JavaScript实现定时跳转到指定页面_javascript技巧

在某些场景下,需要网页在指定的时间后,网页能够自动跳转到指定页面,比如在无法找到指定网页的情况下,就会显示之前设置好的404页面,并且跳转到指定的页面,下面就是一段代码实现了此效果. 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.jb51.net/&q

用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面_javascript技巧

复制代码 代码如下: <script type="text/javascript"> if(self!=top){top.location=self.location;} var ref=document.referrer; var domains=new Array("jb51.net/","jb51.cn/","jb51.com.cn/"); var refpass=false; for(i=0;i<=d

使用pjax实现无刷新更改页面url_javascript技巧

我们都知道ajax给浏览器带来了异步加载的能力,在数据校验.局部刷新等方面提升了用户体验,但同时存在如下问题: 1. 可以无刷新改变页面内容,但无法改变页面URL 2. hash的方式不能很好的处理浏览器的前进.后退等问题 为了解决传统ajax带来的问题,HTML5里加强了history API,加入了pushState.replaceState接口和popstate事件.这里就不详细介绍了,没有这方面知识的同学建议先看一下相关的资料. pjax插件封装了pushState和ajax操作,为我们

用ASP让用户访问指定页面

一个网站有许多页面,如果用户知道某个页面的链接,可以在浏览器中直接输入url访问它.但这在一个要求有安全性的站点上是不允许的.我们要求用户必须登录以后才能访问各级页面,有时也确实希望用户总是先看到站点的主页.这两种要求可以通过在asp的global.asa中对session对象编程来实现. 1.用户必须从主页开始浏览 如果仅希望用户每次上站都先访问站点主页,可以在session的session_onstart事件中加入response.redirect "url"来实现.例如在glob

如何在ASP.NET下遍历指定页面上所有控件

asp.net|遍历|控件|页面 如何在ASP.NET下遍历指定页面上所有控件 序:把它写下的目的,是感觉这段代码会对一些朋友有所帮助! #region 清空指定页面上所有的控件内容,public static void ClearAllContent()/// <summary>/// 清空指定页面上所有的控件内容,包括TextBox,CheckBox,CheckBoxList,RadioButton,RadioButtonList.但是不清/// 除如ListBox,DropDownLis

asp.net网站首页根据IP自动跳转指定页面的示例

 本文介绍的程序主要实现根据IP地址或地址段或IP所在城市进行自动跳转到指定页面的功能,需要的朋友可以参考下 对于大中型网站,为了增强用户体验,往往需要根据不同城市站点的用户推送或展现相应个性化的内容,如对于一些大型门户网站的新闻会有城市站点的功能,如果没有设置相应的城市站点,默认就是根据用户访问的IP地址的所在城市自动设置.本文主要通过自定义扩展IHttpModule接口,考虑到性能IP数据库主要采用QQwry纯真IP数据库,主要实现根据IP地址或地址段或IP所在城市进行自动跳转到指定页面的功

excel怎么打印指定页面动画教程

<Excel2003入门动画教程30.怎么打印指定页面>. 演示动画 操作步骤 Excel中打印多页表格时,经常会出现某页打印错误的现象,这时候不需要再将整个工作表打印一遍,而通过打印指定页面的方法,将打错的页面打印出来就成了: 执行"文件→打印"命令,打开"打印"对话框,在"打印范围"下面选中"页"选项,然后在"从"."到"右侧的方框中输入指定的起始页码(如"3&

WPS如何快速跳转指定页面

  今天小编就给大家介绍一个功能,能在WPS文字上马上进行调整到指定页. 具体操作步骤如下: 第一步:打开我们的文章,文档文章已经插入相关页面 第二步:我们看到菜单栏下的"查找替换--定位",弹出的对话框如图; 这里我们看到"输入页面"这里我们可以输入指定页面,任何点击"定位",看看页面内容,这时可以看到已经为我们跳转到第3页咯!! 是不是很方便呢,马上来体验一下吧!

Word2003文档中为指定页面单独设置横向

  在使用Word2003编辑文档的过程中,有时需要为指定页面单独设置页面方向(例如为多页Word文档中的其中一页或几页设置为横向或纵向页面).此时可以通过选择应用范围来实现,以设置横向为例,操作步骤如下所述: 第1步,打开Word2003文档窗口,将插入点光标移动到指定页面的开始位置.依次单击"文件"→"页面设置"菜单命令. 第2步,在打开的"页面设置"对话框中,选择页面方向为"横向".然后在"预览"区域