8、导航:Nav

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

例如:

他还有一些方法 和生命周期。 http://ionicframework.com/docs/v2/api/components/nav/NavController/

还有就是  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() 是不允许返回的。

时间: 2024-10-19 09:47:37

8、导航:Nav的相关文章

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

后台的同事因为把nav公用了,所以无法单页添加active,一下方法通过判断url的后缀给当前页添加active $(function(){ var _nava= $('.nav .nav-wrapper a'); var _url = window.location.href; var _host = window.location.host; for(var i = 0; i<_nava.length ; i++){ var _astr = _nava.eq(i).attr('href');

Bootstrap导航条

前面的话 导航条(navbar)和导航(nav),就相差一个字,多了一个“条”字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色.而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.本文将详细介绍Bootstrap导航条 基础导航条 在Bootstrap框架中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多. 导航条是在应用或网站中作为导航页头的响应式基础组件.它们在移动设备上可以折叠(并且可开

Bootstarp学习(十一)导航条

导航条基础 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色.而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.在这一节中将一起探讨Bootstrap框架中导航条的使用. 导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本: LESS版本:对应的源文件navbar.less S

Bootstarp学习(十)导航

导航(基础样式) 导航对于一位前端人员来说并不陌生.可以说导航是一个网站重要的元素组件之一,可以便于用户查找网站所提供的各项功能服务.导航的制作方法也是千奇百怪,五花八门.在这一节中将向大家介绍如何使用Bootstrap框架制作各式各样的导航. 在Bootstrap框架将导航独立出来成为一个导航组件,根据不同的版本,可以找到对应的源码: ? LESS版本:对应的源文件是navs.less ? Sass版本:对应的源文件是_navs.scss ? 编译后版本:对应源码是bootstrap.css文

深入理解BootStrap Item11 -- 导航页(navbar)

导航条 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色(显示更突出).而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.在这一节中将一起探讨Bootstrap框架中导航条的使用. 导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本: LESS版本:对应的源文件navbar.l

第 8 章 输入框和导航组件

学习要点: 1.输入框组件 2.导航组件 3.导航条组件 主讲教师:李炎恢 本节课我们主要学习一下Bootstrap的两个个组件功能: 输入框组件和导航导航条组件. 一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展. //在左侧添加文字 <div class="input-group"> <span class="input-group-addon">@</span>

第二百五十节,Bootstrap项目实战--响应式导航

Bootstrap项目实战--响应式导航 学习要点: 1.响应式导航 一.响应式导航 基本导航组件+响应式 第一步,声明导航区域,设置导航默认样式,设置导航条固定在顶部navbar样式class类,写在导航<nav>里,声明导航区域(项目实战Bootstrap)navbar-default样式class类,写在导航<nav>里,设置导航默认样式(项目实战Bootstrap)navbar-fixed-top样式class类,写在导航<nav>里,设置导航条固定在顶部(项目

HTML5 中的Nav元素详解

什么是Nav元素 Nav元素可以用作页面导航的链接组,在导航链接组里面有很多的链接,点击每个链接可以链接到其他页面或者当前页面的其他部分,并不是所有的链接组都要被放在nav元素里面,我们只需要把最主要的.基本的.重要的放在nav元素里面即可. 比如说页脚底部如果有个版权申明,我们就不建议使用nav元素,而是使用footer元素是最合适的.一个页面中我们可用多个nav元素作为整体或者不同部分的导航 nav元素的用法 <body> <h1>nav的使用方法</h1> <

用HTML5做的导航条

首先准备网页背景图片和导航背景图片,放在同一目录下的images文件夹中 编写html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

PHP分页导航页码类实现

<?php define('ACC')||exit('Permision Denied'); //总条数 $total //每页条数 $perpage //总页数 $cnt = ceil($total/$perpage); //相除,向上取整 //第page页 显示 (page-1)*$perpage + 1 条 ~~~ page*$perpage 条 //c.php //c.php?cat_id = 3 //c.php?cat_id =3 $page = 1 //page 参数,应根据页码来生