$ state.go不重定向但是加载内容200 OK

时间:2015-11-03 06:42:43

标签: angularjs nested angular-ui-router

以下是代码http://plnkr.co/edit/JwM8t3oNepP3tE1nUXlM?p=info

的plunker链接

controller.js

if(($scope.login==='Admin')&&($scope.password==='admin'))
{
    $state.go('login.home');
}

的script.js

var DailyUsageApp = angular.module('DailyUsageApp', ['ui.router']);
DailyUsageApp.config(function($stateProvider, $locationProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise('/login');
  $stateProvider.state('login', {
      url: '/login',
      templateUrl: "login.html",
      controller: 'authController'
    })
    .state('login.home', {
      url: '/home',
      templateUrl: "home.html",
      controller: 'homeController'
    });
});

2 个答案:

答案 0 :(得分:4)

您的代码无法正常工作的原因是您正在创建分层状态,而不是分层状态。通过命名您的州login.home,您说homelogin的孩子。这意味着当您尝试和go('login.home') ui路由器尝试呈现登录状态以及作为孩子的家庭状态时。这意味着要使当前布局正常工作,登录模板必须包含自己的ui-view标记。解决此问题的最佳方法是简单地将您的州重命名为home,然后使用$state.go('home');

答案 1 :(得分:1)

an updated plunker

最简单的解决方案是 NOT 将状态login.home嵌套在login下。

//.state('login.home', {
.state('home', {
  url: '/home',
  templateUrl: "home.html",
  controller: 'homeController'
});

还有其他解决方案,例如在login.home内创建login的目标,如下所示:

<div ui-view=""></div

但通常,我们不这样做。只需登录,然后导航到其他一些州的层次结构......