PhoneGap中文网

 找回密码
 立即注册
查看: 16657|回复: 2
打印 上一主题 下一主题

请教嵌套ion-nav-view的问题

[复制链接]

3

主题

9

帖子

43

积分

新手上路

Rank: 1

积分
43
跳转到指定楼层
楼主
发表于 2015-12-3 18:13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在嵌套的ion-nav-view中跳转出现问题。
子ion-nav-view的页面控制父ion-nav-view切换状态时,总是跳转不成功
首页文件 index.html中有一个ion-nav-view
  1. <body>
  2.                 <ion-nav-view name="topNavView"></ion-nav-view>
  3.     </body>
复制代码

业务过程中,topNavView打开了main.html, 这个main.html中也有一个ion-nav-view

  1. <ion-nav-view name="sonNavView" animation="slide-left-right"></ion-nav-view>
复制代码
sonNavView打开一个子页面son.html
  1. <button ng-click="show()"></button>
复制代码
在这个show()方法想让父ion-nav-view打开另外一个页面。

config如下:
  1. $stateProvider.state('main.a', {
  2.      url: "/subpageA",
  3.                     views: {
  4.                                 'sonNavView' : {
  5.                                             templateUrl: "templates/son.html",
  6.                                             controller: 'aCtrl'
  7.                                 }
  8.                      }
  9.     });
  10.     $stateProvider.state('main2', {
  11.                     url: "/main2",
  12.                     views: {
  13.                                 'topNavView' : {
  14.                                             templateUrl: "templates/main2.html",
  15.                                             controller: 'main2Ctrl'
  16.                                 }
  17.                     }
  18.     });
复制代码

controller如下:
  1. app.controller('aCtrl', function($scope, $state, $stateParams, $location) {
  2.             $scope.show = function(){
  3.                         $state.go('main2');
  4.             };
  5. });

  6. app.controller('main2Ctrl', function($scope, $state, $stateParams, $location){
  7.             alert("hello");
  8. });
复制代码
结果是能看到main2界面被加载,同时controller:main2Ctrl中的alert也执行了,但是界面马上会打开main.html
哪位朋友知道这怎么解决?






回复

使用道具 举报

493

主题

2035

帖子

6894

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6894
沙发
发表于 2015-12-4 09:27:32 来自手机 | 只看该作者
ionic基于ui-router的 看看ui-router 相关文档,或者看看我们的ionic基础教程 路由哪一讲
回复 支持 反对

使用道具 举报

3

主题

9

帖子

43

积分

新手上路

Rank: 1

积分
43
板凳
 楼主| 发表于 2015-12-4 13:32:21 | 只看该作者
本帖最后由 tearar 于 2015-12-4 13:51 编辑
admin 发表于 2015-12-4 09:27
ionic基于ui-router的 看看ui-router 相关文档,或者看看我们的ionic基础教程 路由哪一讲 ...

我大概定位到问题的原因了,问题出在ion-tabs上:我的ion-tabs有第四个tab,当第4个tab的on-select上绑定一个$state.go()事件后,一定会出错!
main页面如下:
  1. <ion-view title="Main">
  2.    <ion-nav-bar align-title="center" class="bar-dark"></ion-nav-bar>
  3.    <ion-nav-view name="subpageContent" animation="slide-left-right"></ion-nav-view>
  4.   <ion-footer-bar>
  5.                   <ion-tabs class="tabs-balanced tabs-icon-only">
  6.                       <ion-tab title="view1" icon-on="ion-ios7-keypad" icon-off="ion-ios7-keypad-outline" on-select="show('view1')"></ion-tab>
  7.                       <ion-tab title="view2" icon-on="ion-ios7-chatbubble" icon-off="ion-ios7-chatbubble-outline" on-select="show('view2')"></ion-tab>
  8.                       <ion-tab title="view3" icon-on="ion-ios7-people" icon-off="ion-ios7-people-outline" on-select="show('view3')"></ion-tab>
  9.                       <ion-tab title="view4" icon-on="ion-ios7-keypad" icon-off="ion-ios7-keypad-outline"  on-select="show('view4')"></ion-tab>
  10.                  </ion-tabs>
  11.   </ion-footer-bar>
  12. </ion-view>
复制代码
main页面绑定的controller如下:
  1. app.controller('MainCtrl', function($scope, $state, $stateParams, $location, $ionicTabsDelegate) {
  2.         
  3.           $scope.show = function(name){
  4.                     if(name == "view1") {
  5.                               $state.go('main.view1');
  6.                               return;
  7.                     }
  8.                     if(name == "view2"){
  9.                               $state.go('main.view2');
  10.                               return;
  11.                     }
  12.                     if(name == "view3") {
  13.                               $state.go('main.view3');
  14.                               return;
  15.                     }
  16.                     if(name == "view4") {
  17.        $state.go('main.view4');
  18.                               return;
  19.                     }
  20.         };
  21. });
复制代码
在view1、view2、view4的页面中都只有<ion-view title="view"></ion-view>
在view3中有一button,button的事件是在父ion-nav-view上进行页面切换。
在view3中点击button跳转时,就一定会返回main.html。
当把                if(name == "view4") {   $state.go('main.view4');                 return;        } 中的$state.go()注释掉后,就不会出现错误。
或者把第4个ion-tab中的on-select改为ng-click也不会出错。
再或者,把4个ion-tab减成3个,也不会出错

不知道是不是ion-tabs的bug
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2025-1-5 08:54 , Processed in 0.069484 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表