离子角度多个嵌套和抽象状态

时间:2015-07-24 11:16:09

标签: angularjs ionic-framework angular-ui-router ionic

我一直在研究一个需要2个具有嵌套状态的抽象状态的应用程序,下面是示例配置

$stateProvider
 .state('app', {
  url: "/app",
  abstract: true,
  templateUrl: "templates/menu.html",
  controller: "AppController"
 })
 .state('app.screenList', {
  url: "/app/screenList",
  views: {
   'menuContent': {
   templateUrl: "templates/screenList.html",
   controller: "ScreenListController"
   }
  }
 })
 .state('app.screen1', {
  url: "/app/screen1",
  views: {
   'menuContent': {
   templateUrl: "templates/screen1.html",
   controller: "Screen1Controller"
   }
  }
 })
 .state('app.subapp', {
  url: "/app/subapp",
  abstract: true,
  views: {
   'menuContent': {
   templateUrl: "templates/subapp.html",
   controller: "SubAppController"
   }
  }
 })
.state('app.subapp.screen1', {
  url: "/app/subapp/screen1",
  views: {
   'subappContent': {
   templateUrl: "templates/subappscreen1.html",
   controller: "SubAppScreen1Controller"
   }
  }
 })

screenList状态显示要选择的屏幕列表。当发生以下导航时,一切正常

screenList > screen1按返回键,然后按subapp.screen1

在此阶段退后工作。

有趣的是,当我尝试执行以下导航时,后退停止响应并且没有任何反应。

screenList > screen1按返回键,然后按subapp.screen1按返回键,然后再按subapp.screen1(此阶段按后退键无效。即使应用程序也不退出。)< / p>

我完全不知道为什么会这样,我得出的唯一结论是,如果我连续尝试进入subapp.screen1,问题就出现了。如果我在subapp.screen1screen1之间切换,一切正常。

我希望无论状态如何切换,后退键都应该响应。

1 个答案:

答案 0 :(得分:0)

基于this post,我终于让事情奏效了。

tabs.html中,我声明了一个这样的标签:

  <ion-tab title="ServOOps Mobile" icon="ion-person-stalker" ui-sref="app.tabs.external-index">
<ion-nav-view name="tab-servicos"></ion-nav-view>

app.js中,我这样说:

.state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/menu.html',
    controller: 'AppCtrl'
})

  .state('app.tabs', {
  url: "/tabs",
  views: {
    'menuContent': {
      templateUrl: "templates/tabs.html"
    }
  }
})

.state('app.tabs.external-index', {
    url: '/external-index',
    views: {
        'menuContent': {
            templateUrl: 'templates/external-index.html',
            controller: 'ExternalIndexCtrl'
        },
        'tab-servicos': {
          templateUrl: 'templates/external-index.html',
          controller: 'ExternalIndexCtrl'
        }
    }
})

这很好用。现在我在这个页面上有我的侧边菜单和我的标签。

您必须为其他标签重播此内容。

请记住,在此我将外部索引链接到选项卡,现在,页面链接将为#/app/tabs/external-index.html