ionic 导航

ionic 导航

ion-nav-view

当用户在你的app中浏览时,ionic能够检测到浏览历史。通过检测浏览历史,实现向左或向右滑动时可以正确转换视图。
采用AngularUI路由器模块等应用程序接口可以分为不同的$state(状态)。Angular的核心为路由服务,URLs可以用来控制视图。
AngularUI路由提供了一个更强大的状态管理,即状态可以被命名,嵌套, 以及合并视图,允许一个以上模板呈现在同一个页面。
此外,每个状态无需绑定到一个URL,并且数据可以更灵活地推送到每个状态。
以下实例中,我们将创建一个应用程序中包含不同状态的导航视图。
我们的标记中选择ionNavView作为顶层指令。显示一个页眉栏我们用 ionNavBar 指令通过导航更新。
接下来,我们需要设置我们的将渲染的状态值。

var app = angular.module('myApp', ['ionic']);
app.config(function($stateProvider) { 
  $stateProvider 
  .state('index', { 
    url: '/', 
    templateUrl: 'home.html' 
  })
 .state('music', { 
    url: '/music', 
    templateUrl: 'music.html' 
  });
});

再打开应用,$stateProvider 会查询url, 看是否匹配 index 状态值, 再加载index.html到<ion-nav-view>。

页面加载都是通过URLs配置的。在Angular中创建模板最一个简单的方式就是直接将他放到html模板文件中并且用<script type="text/ng-template"> 包含。
所以这也是一种方式将Home.html加入到我们的APP中来:

<script id="home" type="text/ng-template"> 
  <!-- ion-view 标题将显示在 navbar 中 --> 
  <ion-view view-title="Home"> 
    <ion-content ng-controller="HomeCtrl"> 
      <!-- The content of the page --> 
      <a href="#/music">Go to music page!</a> 
    </ion-content> 
  </ion-view>
</script>

尝试一下 »
这是一个很好的方法,因为模板会很快的加载并被缓存就不同通过网络再去加载。


缓存

通常情况下,视图都被缓存了能提升性能。当跳出视图时,他的元素被保留在Dom中,并且它的作用域也从 $watch 中移除。
当我们跳到一个已经被缓存了的视图,视图会被激活,它的作用域被重新连接上,Dom中也保存了他的元素。这也允许保持以前的视图滚动位置。
缓存也可以通过很多方式来开启和关闭的。默认Ionic将最大缓存页面数为10个,并且这并不是唯一可以定制的,应用程序可以显式状态来设置视图应不应该被缓存。
注意,因为我们是缓存这些视图,我们没有破坏作用域。相反, 它的作用域也从 $watch 中移除。
因为接下来的观看作用域并没有被摧毁和重建,控制器也没被再次加载。如果app/controller需要知道什么时候进入或离开一个视图,再视图事件从 ionView 作用内发出, 例如 $ionicView.enter, 可能是有用的。

全局禁用缓存

$ionicConfigProvider 可以用于设置最大允许缓存的视图数量,通过设置为0来禁用所有缓存。

$ionicConfigProvider.views.maxCache(0);
在STATE PROVIDER中禁用缓存
$stateProvider.state('myState', { 
  cache: false, 
  url : '/myUrl', 
  templateUrl : 'my-template.html'
})
通过属性禁用缓存
<ion-view cache-view="false" view-title="My Title!">
   ...
</ion-view>
AngularUI 路由

请访问 AngularUI Router's docs 了解更多。

API
属性 类型 详情
name(可选) 字符串 一个视图的名字。这个名字应该是在相同的状态下其他视图中唯一的。你可以在不同的状态中有相同名称的视图。欲了解详细信息,查看ui-router的 ui-view 文档

ion-view

隶属于ionNavView。 一个内容的容器,用于展示视图或导航栏信息。
下面是一个带有"我的页面"标题的导航栏载入页面的例子。

<ion-nav-bar></ion-nav-bar>
<ion-nav-view class="slide-left-right"> 
  <ion-view title="我的页面"> 
    <ion-content> 
      你好! 
    </ion-content> 
  </ion-view>
</ion-nav-view>
API
属性 类型 详情
title(可选) 字符串 显示在父ionNavBar 的标题。
hide-back-button(可选) 布尔值 默认情况下,是否在父ionNavBar 隐藏后退按钮。
hide-nav-bar(可选) 布尔值 默认情况下,是否隐藏父ionNavBar 。

ion-nav-bar

创建一个顶部工具栏,当程序状态改变时更新。

用法
<body ng-app="starter"> 
  <!-- 当我们浏览时,导航栏会随之更新。 --> 
  <ion-nav-bar class="bar-positive nav-title-slide-ios7"> </ion-nav-bar> 
  <!-- 初始化时渲染视图模板 --> 
  <ion-nav-view></ion-nav-view>
</body>

API

属性 类型 详情
delegate-handle(可选) 字符串 该句柄用$ionicNavBarDelegate 标识此导航栏。
align-title(可选) 字符串 导航栏标题对齐的位置。可用: 'left', 'right', 'center'。 默认为 'center'。

ion-nav-buttons

隶属于ionNavView
在ionView内的ionNavBar上用ionNavButtons设置按钮。
你设置的任何按钮都将被放置在导航栏的相应位置,当用户离开父视图时会被销毁。

用法
<ion-nav-bar></ion-nav-bar>
<ion-nav-view> 
  <ion-view> 
    <ion-nav-buttons side="left"> 
      <button class="button" ng-click="doSomething()"> 
        我是一个在导航栏左侧的按钮! 
      </button> 
    </ion-nav-buttons> 
    <ion-content> 
      这里是一些内容! 
    </ion-content> 
  </ion-view>
</ion-nav-view>
API
属性 类型 详情
side 字符串 在父ionNavBar中按钮放置的位置。 可用: 'left' 或 'right'。

ion-nav-back-button

在一个ionNavBar中创建一个按钮。
当用户在当前导航能够后退时,将显示后退按钮。

用法

默认按钮动作:

<ion-nav-bar> 
  <ion-nav-back-button class="button-clear"> 
    <i class="ion-arrow-left-c"></i> 后退 
  </ion-nav-back-button>
</ion-nav-bar>

自定义点击动作,用 $ionicNavBarDelegate:

<ion-nav-bar ng-controller="MyCtrl"> 
  <ion-nav-back-button class="button-clear" ng-click="canGoBack && goBack()"> 
    <i class="ion-arrow-left-c"></i> 后退 
  </ion-nav-back-button>
</ion-nav-bar>


function MyCtrl($scope, $ionicNavBarDelegate) { 
  $scope.goBack = function() { 
    $ionicNavBarDelegate.back(); 
  };
}

在后退按钮上显示上一个标题,也用$ionicNavBarDelegate。

<ion-nav-bar ng-controller="MyCtrl"> 
  <ion-nav-back-button class="button-icon"> 
    <i class="icon ion-arrow-left-c"></i>
    {{getPreviousTitle() || 'Back'}} 
  </ion-nav-back-button>
</ion-nav-bar>


function MyCtrl($scope, $ionicNavBarDelegate) { 
  $scope.getPreviousTitle = function() { 
    return $ionicNavBarDelegate.getPreviousTitle(); 
  };
}

nav-clear

nav-clear一个当点击视图上的元素时用到的属性指令,比如一个 < a href> 或者一个 <button ui-sref>。
当点击时,nav-clear将会导致给定的元素,禁止下一个视图的转换。这个指令很有用,比如,侧栏菜单内的链接。

用法

下面是一个侧栏菜单内添加了nav-clear指令的一个链接。点击该链接将禁用视图间的任何动画。

<a nav-clear menu-close href="#/home" class="item">首页</a>

ion-nav-title

ion-nav-title 用于设置 ion-view 模板中的标题。

用法
  <ion-nav-bar></ion-nav-bar>
  <ion-nav-view> 
    <ion-view> 
      <ion-nav-title> 
        <img src="logo.svg"> 
      </ion-nav-title> 
      <ion-content> 
        Some super content here! 
      </ion-content> 
    </ion-view>
  </ion-nav-view>

nav-transition

设置使用的过渡类型,可以是:ios, android, 和 none。
用法

<a nav-transition="none" href="#/home">Home</a>

nav-direction

设置导航视图中过渡动画的方向,可以是forward, back, enter, exit, swap。

用法
<a nav-direction="forward" href="#/home">Home</a>

$ionicNavBarDelegate

授权控制 ion-nav-bar 指令。

用法
<body ng-controller="MyCtrl"> 
  <ion-nav-bar> 
    <button ng-click="setNavTitle('banana')"> 
      Set title to banana! 
    </button> 
  </ion-nav-bar>
</body>


function MyCtrl($scope, $ionicNavBarDelegate) { 
  $scope.setNavTitle = function(title) { 
    $ionicNavBarDelegate.title(title); 
  }
}
方法
align([direction])

在浏览历史中后退。

参数 类型 详情
event(可选) DOMEvent 事件对象(如来自点击事件)
align([direction])

带有按钮的标题对齐到指定的方向。

参数 类型 详情
direction(可选) 字符串 标题文字对齐的方向。可用: 'left', 'right', 'center'。 默认: 'center'。

**返回值: **布尔值, 后退按钮是否显示。

showBar(show)

设置或获取 ion-nav-bar 是否显示。

参数 类型 详情
show 布尔值 导航栏是否显示。

**返回值: **布尔值, 导航栏是否显示。

showBackButton([show])

设置或获取 ion-nav-back-button 是否显示。

参数 类型 详情
show(可选) 布尔值 是否显示后退按钮
title(title)
参数 类型 详情
title 字符串 显示新标题。

为ion-nav-bar设置标题。

参数 类型 详情
title 字符串 显示新标题。

$ionicHistory

$ionicHistory 用于跟踪用户在 app 内的浏览记录。

方法
viewHistory()

用于查看历史记录。

currentView()

app 的当前视图。

currentHistoryId()

历史堆栈的 ID,是当前视图的父类容器。

currentTitle([val])

获取或设置当前视图的标题。

backView()

返回上次浏览的视图。

backTitle()

获取上次浏览的视图的标题。

forwardView()

返回历史堆栈中当前视图的上一个视图。

currentStateName()

返回当前状态名。

goBack([backCount])

app 回退视图,如果回退的视图存在。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • view-title - 视图标题文字 模板被载入导航视图ion-nav-view显示时,这个属性值将显示在导航栏...
    lzb30阅读 2,883评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,432评论 25 707
  • 少年好不容易平复下来的眉又皱了起来,却不是不耐烦和生气,而是因为,沐夏现在看起来实在是太惨了,血流了很多因...
    染独欢阅读 221评论 0 0
  • 毛尖独妙车云茶 2016-04-17 尚好茶 尚好茶 茶中名品,必产自风水、地势绝佳之处,才能吞吐天地灵气,敛取日...
    尚好茶黄敏宸阅读 1,153评论 0 0