以下是代码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'
});
});
答案 0 :(得分:4)
您的代码无法正常工作的原因是您正在创建分层状态,而不是分层状态。通过命名您的州login.home
,您说home
是login
的孩子。这意味着当您尝试和go('login.home')
ui路由器尝试呈现登录状态以及作为孩子的家庭状态时。这意味着要使当前布局正常工作,登录模板必须包含自己的ui-view
标记。解决此问题的最佳方法是简单地将您的州重命名为home
,然后使用$state.go('home');
答案 1 :(得分:1)
最简单的解决方案是 NOT 将状态login.home
嵌套在login
下。
//.state('login.home', {
.state('home', {
url: '/home',
templateUrl: "home.html",
controller: 'homeController'
});
还有其他解决方案,例如在login.home
内创建login
的目标,如下所示:
<div ui-view=""></div
但通常,我们不这样做。只需登录,然后导航到其他一些州的层次结构......