【原】ionic页面跳转、传参、返回等常见问题

1.页面跳转。

第一部分:

左边页面2,右边页面2.1

页面2:

.state('tab.chats', {
url: '/chats',
cache:false,
views: {
'tab-chats': {
templateUrl: 'templates/tab-chats.html',
controller: 'ChatsCtrl'
}
}
})

页面2.1:

.state('tab.chat-detail', {
url: '/chats/:chatId',
views: {
'tab-chats': {
templateUrl: 'templates/chat-detail.html',
controller: 'ChatDetailCtrl'
}
}
})

ionic常用的跳转一共有两种类型,一种是通过state的名字--'tab.chat-detail'来跳转;另一种则是通过url--'/chats/:chatId‘来跳转。
先说第一种,通过state名字--'tab.chat-detail'跳转。
(1)在angularjs里,使用:$state.go(''tab.chat-detail'),
(2)如果是a标签跳转,则使用:ui-sref=“tab.chat-detail”。
第二种跳转,通过url---'/chats/:chatId‘来跳转。
(1)在angularjs里,使用:$location.path('/chats/1'),
(2)如果是a标签跳转,则使用:ng-href=“/chats/1”。或href=“/chats/1”

第二部分:

公共页面commen.html

有时候我们写一个项目的时候,几个tab都需要跳到同样一个页面,我们发现页面跳转有问题,不能达到自己想要的效果.比如底部菜单栏tabs上的status模块的一级页面跳转到commen.html页面,而底部菜单栏tabs上的account模块的一级页面也要跳转到commen.html页面,这时我们的页面跳转可能有些阻碍了,如果想要正常跳转,注意这几个地方:
(1)公共文件在commen.htmlapp.js要这么写:

.state('commen', {
url: '/commen',
params:{'id':null},
templateUrl: 'templates/commen.html',
controller: 'CommenCtrl'
})

注意:不要写:views: {'tab-chats': {}},这个公共文件不属于任何一个模块,名字也不要带上:‘tab.chats-’,如果这么写它会默认这个文件属于某个模块的。正确的如上图。然后就可以正常当跳转了:ui-sref=“commen”。
这里很重要!!:这种方式跳转会导致右返回不见,页面自定义返回按钮并点击返回上一个页面的方法在下面第6部分中。
2.页面跳转参数传递。
参数传递根据跳转方式也分为两种:实例:tab.chats列表跳转到子页面tab.chat-detail.均以多个参数来举例。

一、通过state名字--'tab.chat-detail'跳转。
.state('tab.chat-detail', {
params:{'id':null,'chatname':null},
views: {
'tab-chats': {
templateUrl: 'templates/chat-detail.html',
controller: 'ChatDetailCtrl'
}
}
})

(1)在angularjs里,使用:$state.go(''tab.chat-detail',{id:1,****chatname****:ben}),
(2)如果是a标签跳转,则使用:ui-sref=“tab.chat-detail({id:1,****chatname****:ben})”。
多个参数就用逗号隔开。

二、通过url---'/chats/:chatId‘来跳转。

.state('tab.chat-detail', {
url: '/chats/:chatId/:chatname',
views: {
'tab-chats': {
templateUrl: 'templates/chat-detail.html',
controller: 'ChatDetailCtrl'
}}})

(1)在angularjs里,使用:$location.path('/chats/2/ben'),
(2)如果是a标签跳转,则使用:ng-href=“/chats/1/ben”。或href=“/chats/2/ben”
多个参数在app.js是以“/:”隔开的,在使用时是以”/“隔开的。
3.获取页面url传递的参数:
$stateParams.chatname。
chatname”是在app.js里定义的参数名的
4.返回时刷新页面:
使用:cache:false
具体使用方法,在app.js里:

.state('tab.chats', {
url: '/chats',
cache:false,
views: {
'tab-chats': {
templateUrl: 'templates/tab-chats.html',
controller: 'ChatsCtrl'
}
}
})

5.跳转页面,隐藏底部tab:


(1)app.js里写上:(写在“angular.module('starter',。。”代码和“.run(function($ionicPlatform) {”代码中间即可)

.directive('hideTabs', function($rootScope) {
return {
restrict: 'A',
link: function(scope, element, attributes) {
scope.$on('$ionicView.beforeEnter', function() {
scope.$watch(attributes.hideTabs, function(value){
$rootScope.hideTabs = value;
});
});
scope.$on('$ionicView.beforeLeave', function() {
$rootScope.hideTabs = false;
});
}
};
})

(2)然后在tabs.html文件里写上:
ng-class="{'tabs-item-hide': $root.hideTabs}"
示例:
<ion-tabs class="tabs-icon-top tabs-color-active-positive" ng-class="{'tabs-item-hide': $root.hideTabs}">
(3)在需要隐藏tabs的页面写上:hide-tabs="true"****
例如:<ion-view view-title="{{chat.name}}" hide-tabs="true">
注:显示tabs的是:showTabs。(一般用不着)
例如:<ion-view view-title="{{chat.name}}" showTabs>****
隐藏导航栏比较容易,一句话搞定:hide-nav-bar="true"
6.设置右返回按钮。
上面跳转公共文件commen.html的方法会使返回按钮不见或或平时想使用自定义返回按钮可以这样写:

步骤(1):html代码:

<ion-nav-buttons side="left">
<button class="button button-icon" ng-click="goback()">
<i class="icon ion-ios-arrow-back"></i>
</button>
</ion-nav-buttons>

步骤(2):controller.js里的angularjs返回上一个页面的代码应该这么写:

.controller('CommenCtrl', function($scope, $stateParams, $ionicHistory) {
$scope.goback = function() {
$ionicHistory.goBack();//返回上一个页面
}
})

7.修改被选中元素属性值:

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

推荐阅读更多精彩内容