Angularjs $state.go不重定向,但其加载内容时带有200 OK
这是代码的plunker链接 controller.jsAngularjs $state.go不重定向,但其加载内容时带有200 OK,angularjs,nested,angular-ui-router,Angularjs,Nested,Angular Ui Router,这是代码的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($stateProvide
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'
});
});
代码不起作用的原因是因为您正在创建分层状态,而不是分层状态。通过将您的州命名为
login.home
,您是在说home
是login
的孩子。这意味着,当您尝试和go('login.home')
ui路由器试图将登录状态和主页状态呈现为子级。这意味着,要使当前布局正常工作,登录模板必须包含自己的ui视图
标记。解决这一问题的最佳方法是简单地将您的状态重命名为justhome
,然后使用$state.go('home')代码>您的代码无法工作的原因是您正在创建分层状态,而这并不意味着分层状态。通过将您的州命名为login.home
,您是在说home
是login
的孩子。这意味着,当您尝试和go('login.home')
ui路由器试图将登录状态和主页状态呈现为子级。这意味着,要使当前布局正常工作,登录模板必须包含自己的ui视图
标记。解决这一问题的最佳方法是简单地将您的状态重命名为justhome
,然后使用$state.go('home')代码>有
最简单的解决方案是不使statelogin.home
嵌套在login
下
//.state('login.home', {
.state('home', {
url: '/home',
templateUrl: "home.html",
controller: 'homeController'
});
还有其他解决方案,如在login
内部为login.home
创建目标,如下所示:
<div ui-view=""></div
有
最简单的解决方案是不使statelogin.home
嵌套在login
下
//.state('login.home', {
.state('home', {
url: '/home',
templateUrl: "home.html",
controller: 'homeController'
});
还有其他解决方案,如在login
内部为login.home
创建目标,如下所示:
<div ui-view=""></div