无法从父路径打开另一个子状态

时间:2016-05-26 05:15:04

标签: javascript angularjs web angular-ui-router state

这是我的代码

app.js

'use strict';
angular
  .module('nameApp', ['ngResource','ui.router','ngRoute'])
  .config(function($stateProvider, $urlRouterProvider) {
        $stateProvider

            // route for the main body
            .state('app', {
                url:'/',
                abstract: true,
                views:{
                    'bodyLogin': {
                        templateUrl : 'views/login/body.html'
                    },
                    'bodyMain': {
                        templateUrl : 'views/main/body.html'
                    }
                }
            })

            //route for unregistered user
            .state('app.mainUnreg', {
                url:'',
                views: {
                    'content@app': {
                        templateUrl : 'views/login/home.html',
                        controller  : ''
                    }
                }
            })

            //route for registered user

            .state('app.mainReg', {
                url:'',
                views: {
                    'header@app': {
                        templateUrl : 'views/main/header.html',
                        controller  : ''
                    },
                    'sidebar@app': {
                        templateUrl : 'views/main/sidebar.html',
                        controller  : ''
                    },
                    'middle@app': {
                        templateUrl : 'views/main/home.html',
                        controller  : ''
                    },
                    'footer@app': {
                        templateUrl : 'views/main/footer.html',
                    }
                }

            })

        $urlRouterProvider.otherwise('/');
    })
;

controller.js

.controller('BodyController', ['$scope', '$state', '$stateParams', '$rootScope', 'AuthFactory', function($scope, $state, $stateParams, $rootScope, AuthFactory){

    $scope.loggedIn = false;
    $scope.username = '';
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;

    if($scope.loggedIn === false){
        $scope.layout = 'styles';
        $state.transitionTo('app.mainReg');
    }
    else{
        $scope.layout = 'login';
        $state.transitionTo('app.mainUnreg');
    }
}])

的index.html

<html lang="en" ng-app="nameApp" ng-controller="BodyController">
    <head>....</head>
    <body>
        <div ng-if="loggedIn" ui-view="bodyLogin" class="site-wrapper" ui-sref-active="app.mainUnreg"></div>

        <div ng-if="!loggedIn" ui-view="bodyMain" ui-sref-active="app.mainReg"></div>

      <!-- some scripts -->
    </body>
</html>

我在!loggedIn 情况下都尝试过,我可以成功访问 bodyLogin ,但是当我尝试 bodyMain 时,它失败了。

但是,如果我删除 app.mainUnreg 状态,我可以从索引中成功访问 bodyMain

任何人都可以帮助我提供任何情况,因此我可以根据来自controller.js的 loggedIn 状态动态访问这两种状态吗?

谢谢。

0 个答案:

没有答案