1、导航视图
 

angular2 中的是视图是显示在<router-outlet></router-outlet>里的同时他要依赖于 directives:[ ROUTER_DIRECTIVES ],还必须要配置RouteConfig 然而ionic 是这样的。

/* ---示例代码----*/

import {Component} from '@angular/core';
import {ionicBootstrap} from 'ionic-angular';
import {GettingStartedPage} from './getting-started'; @Component({
template: `<ion-navswipeBackEnabled="false" [root]="rootPage"></ion-nav>`
})
class MyApp {
root = GettingStartedPage;
} ionicBootstrap(MyApp); /* ---示例代码----*/
其中 swipeBackEnabled="false" 代表是否可以后退
如上看来他直接省去了 RouteConfig 我们只需要控制 变量 root 所指向的 组件 就可以完成。视图的渲染器了。他的简便让我忘记了ng2.。。。。

2、ion-navbar

/* ---示例代码----*/

<ion-navbar *navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>
Page Title
</ion-title> <ion-buttons end>
<button (click)="openModal()">
<ion-icon name="options"></ion-icon>
</button>
</ion-buttons>
</ion-navbar> /* ---示例代码----*/

作用于页面的导航header 他的效果。

3、NavController
 
首先需要导入。
/* ---示例代码----*/

import {NavController, NavParams} from 'ionic-angular';

class MyComponent {
constructor(nav: NavController) {
this.nav = nav;
}
} /* ---示例代码----*/
比较火热的就是 this.nav.setRoot(page,params,opt); 了这个方法 有三个参数。
1、page 组件  : 想放进导航的 组件名称    
2、params 参数:像下一个页面传递参数 Object类型
3、过度完成。返回一个promise
例如:
还有就是  this.nav.push(page,params); 他是一个异步的。带有过度效果 而nav.setRoot()是一个view的切换 因此他并没有返回button之类的东西,当从一个页面过来 需要可以有后退按钮的时候 需要用到 push 比如 我一个view里面有3个页面 这三个页面并没有任何关系。这个时候用 setRoot 如果我是从一个页面进到他的类似于子页面的时候 这个时候可以用push 
 
4、NavParams
 
/* ---示例代码----*/

export class MyClass{
constructor(params: NavParams){
this.params = params;
// userParams is an object we have in our nav-parameters
this.params.get('userParams');
}
} /* ---示例代码----*/

他有一个get方法 接受 object里面的属性。和ng2一样。

5、NavPush 和 navParams 属性
我们上面看了this.nav.push他是一个方法。
我们在初始生成的时候 list.html 页面和 list.js是这么写的
/* ---list.html---*/

<ion-navbar *navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>My First List</ion-title>
</ion-navbar> <ion-content>
<ion-list>
<button ion-item *ngFor="let item of items" (click)="itemTapped($event, item)">
<ion-icon name="{{item.icon}}" item-left></ion-icon>
{{item.title}}
<div class="item-note" item-right>
{{item.note}}
</div>
</button>
</ion-list>
<div *ngIf="selectedItem" padding>
You navigated here from <b>{{selectedItem.title}}</b>
</div>
</ion-content> /* ---list.html---*/
/* ---list.js---*/

import {Page, NavController, NavParams} from 'ionic-angular';
import {ItemDetailsPage} from '../item-details/item-details'; @Page({
templateUrl: 'build/pages/list/list.html'
})
export class ListPage {
selectedItem: any;
icons: string[];
items: Array<{title: string, note: string, icon: string}>; constructor(private nav: NavController, navParams: NavParams) {
// If we navigated to this page, we will have an item available as a nav param
this.selectedItem = navParams.get('item'); this.icons = ['flask', 'wifi', 'beer', 'football', 'basketball', 'paper-plane',
'american-football', 'boat', 'bluetooth', 'build']; this.items = [];
for(let i = 1; i < 11; i++) {
this.items.push({
title: 'Item ' + i,
note: 'This is item #' + i,
icon: this.icons[Math.floor(Math.random() * this.icons.length)]
});
}
}
itemTapped(event, item) {
this.nav.push(ItemDetailsPage, {
item: item
});
}
} /* ---list.js---*/
可以看得出来 list列表 绑定了 每个点击方法 。点击方法 又触发了 itemTapped方法 跳转到页面 ,这样的话做一些简单的操作 感觉没有必要再写一些方法了。这样很麻烦。
这个属性 可以很有效的帮助你。把html页面 红色部分
<button ion-item  *ngFor="let item of items" (click)="itemTapped($event, item)">
改成。 <button ion-item [navPush]="pushPage" [navParams]="{ item: item}" *ngFor="let item of items" >
再把js部分 的 itemTapped方法 改成。pushPage = ItemDetailsPage; ItemDetailsPage 对应着组件。

这样是不是很简单的就导航到另一个页面 并且传了参数?

5、nav-pop 返回

我在item-details.html中添加了一行代码 红色部分

/* ---示例代码----*/

<ion-navbar *navbar>
<button menuToggle *ngIf="!selectedItem">
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Item Details</ion-title>
</ion-navbar> <ion-content>
<div *ngIf="selectedItem" class="selection">
<b>{{selectedItem.title}}</b>
<ion-icon name="{{selectedItem.icon}}"></ion-icon>
<div>
You navigated here from <b>{{selectedItem.title}}</b>
</div>
</div> <button block nav-pop>返回</button>
</ion-content> /* ---示例代码----*/

他的作用是返回上级页面 这个时候他就可以返回到list页面了 这时候也体现出了 nav.setRoot() 与 nav.push(); 的差别  nav.setRoot() 是不允许返回的。

8、导航:Nav的更多相关文章

  1. amazeui学习笔记--css(常用组件9)--导航nav

    amazeui学习笔记--css(常用组件9)--导航nav 一.总结 1.导航基本使用:<ul> 添加 .am-nav class 以后就是一个基本的垂直导航.默认样式中并没有限定导航的 ...

  2. jquery 根据网站url给导航nav添加active效果

    后台的同事因为把nav公用了,所以无法单页添加active,一下方法通过判断url的后缀给当前页添加active $(function(){ var _nava= $('.nav .nav-wrapp ...

  3. HTML5 中的Nav元素详解

    什么是Nav元素 Nav元素可以用作页面导航的链接组,在导航链接组里面有很多的链接,点击每个链接可以链接到其他页面或者当前页面的其他部分,并不是所有的链接组都要被放在nav元素里面,我们只需要把最主要 ...

  4. Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单

    一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...

  5. Bootstrap_导航

    一.标签形tab导航 标签形导航,也称为选项卡导航. 标签形导航是通过“.nav-tabs”样式来实现.在制作标签形导航时需要在原导航“.nav”上追加此类名. <ul class=" ...

  6. jquery模板制作左侧导航组件

    /** * Created by bmk on 16-4-25. * * 用法:在自己的js里面把左侧导航的相关图标和对应的列表项名称如下编写: * 版本更新日至按需添加 * 在js中的RNA.run ...

  7. Bootstrap 输入框和导航组件

    一.输入框组件 //在左侧添加文字 <div class="input-group"> <span class="input-group-addon&q ...

  8. BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)

    上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前 ...

  9. Bootstrap 导航

    在本文中,您将学习如何使用 Bootstrap 工具包来创建基于导航.标签.胶囊式标签的导航. 基于标签的导航 nav nav-tabs <!DOCTYPE html> <html ...

  10. 第八十六节,html5+css3pc端固定布局,网站结构,CSS选择器,完成导航

    html5+css3pc端固定布局,网站结构,CSS选择器,完成导航 页面采用1280的最低宽度设计,去掉滚动条为1263像素. 项目是PC端的固定布局,会采用像素(px)单位. 网站结构语义 在没有 ...

随机推荐

  1. IoC概要

    控制反转基本上说的是功能调用者与功能实现者之间应该如何交互,即二者之间没有直接的强耦合(调用者new一个被调用者),而是都依赖同一个抽象,这个抽象规定了二者交互的接口.反转的意思是实现了依赖倒置,在程 ...

  2. orcal 锁表

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  3. Logstash 性能及其替代方案

    介绍 当谈及集中日志到 Elasticsearch 时,首先想到的日志传输(log shipper)就是 Logstash.开发者听说过它,但是不太清楚它具体是干什么事情的: 当深入这个话题时,我们才 ...

  4. AOP之 Filter实用

    前言 开心一笑~~~ 一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶奶和一个年轻漂亮的姑娘.两个上前坐了下来.程序 ...

  5. objectARX 添加线型下拉组合框空间 CAcUiLineTypeComboBox

    不知道是有意还是无意,objectARX的所有文档中,居然没有CAcUiLineTypeComboBox, 而实际上这个是存在的.位于\inc\acuiComboBox.h 而在添加变量的向导中也没有 ...

  6. shell 常用命令集合

    grep -i 忽略大小写 -I 跳过二进制文件 -c 计算数量 -n 显示行号 -R 递归 -v 不匹配某个关键字 常用组合命令 grep -iIRn keyword * 搜索含有该 keyword ...

  7. 2、TensorFlow训练MNIST

    装载自:http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html TensorFlow训练MNIST 这个教程的目标读者是对机器学习和T ...

  8. 如果你创建了类似于下面的 Twitter 元素,那么它相关的类定义是啥样子的?

    代码: <Twitter username='tylermcginnis33'> {(user) => user === null ? <Loading /> : < ...

  9. 2.6 Go 读取CSV

    Go读取CSV文件,其内容被转换成字符串数组 package main import ( "encoding/csv" "fmt" "io/iouti ...

  10. Postman学习(压力测试)

    Postman下载安装后 下面是在网上随便抓了一个请求地址来做演示,把请求地址填入地址栏,此请求为GET请求.点击Send发送请求,请求结果将会在下方显示出来.每次的请求历史数据,会被记录下来,但是经 ...