问题 AngularJS过渡到抽象状态


我正在开发一个使用AngularJS构建的应用程序,它有两种不同的状态:

  1. App简介向导
  2. 应用页面(带有导航模板和嵌套视图)

我想在第一次有人访问应用程序时默认为状态1,一旦完成向导,继续到应用程序页面,状态2。

我的“app”状态(状态2)是一个抽象状态,因为它具有嵌套视图。所以我无法过渡到这种状态。

.config(function($stateProvider, $urlRouterProvider) {
$stateProvider

  .state('intro', {
    url: '/',
    templateUrl: 'templates/intro.html',
    controller: 'IntroCtrl'
  })

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

  .state('app.playlists', {
    url: "/playlists",
    views: {
      'menuContent' :{
        templateUrl: "templates/playlists.html",
        controller: 'PlaylistsCtrl'
      }
    }
  });

  $urlRouterProvider.otherwise("/");

})

12265
2018-04-04 17:54


起源

过渡到其中一个子州?和/或做这样的事情:$ urlRouterProvider.when('/ app','/ app / playlists'); - aet
@aet我试过这个,但由于我的应用程序状态是使用侧边菜单模板,直接进入应用程序/播放列表没有加载菜单。 - Mark Kamyszek
@MarkK为此提出了相同的问题。我正在尝试将Ionic Intro Tutorial与Splashscreen集成(codepen.io/gwhickman/pen/zpDFG)侧面菜单应用程序得到问题。 - Vinod Kumar Marupu
@VinodKumarMarupu不幸的是,不是。我已经废弃了这个流程并重新启动了我的应用程序。 - Mark Kamyszek


答案:


我和你有同样的问题,这是关于抽象状态的其他帖子: angularjs ui-router默认子状态和ui-sref

它确实清楚地解释了为什么你无法直接访问抽象状态

回复这篇文章有点迟了,但希望它会有所帮助。

(顺便说一下,这应该是评论)


13
2017-09-16 11:14





我已将$ location服务添加到“简介”页面的控制器,并使用以下内容转换到适合我的应用程序状态。

$location.path('app/playlists');

menu.html已加载并导航到播放列表。


3
2018-01-16 21:33





在服务中:

$location.path(
    $state.href('app.some.abstract.state', { some: 'params' })
);

或者在模板中($state 必须在本地或全球提供 $scope):

<a ng-href="{{$state.href('app.some.abstract.state', { some: 'params' })}}">...</a>

0
2018-06-21 23:54