$state.go 不是重定向而是加载内容 200 OK
$state.go not redirecting but its loading the content with 200 OK
这是代码 http://plnkr.co/edit/JwM8t3oNepP3tE1nUXlM?p=info
的插件 link
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'
});
});
您的代码无法正常工作的原因是您正在创建分层状态,而这并不意味着是分层的。通过命名您的状态 login.home
,您是在说 home
是 login
的子级。这意味着当您尝试并且 go('login.home')
ui 路由器正在尝试将登录状态和家庭状态呈现为子级。这意味着要使您当前的布局正常工作,登录模板必须包含自己的 ui-view
标记。解决此问题的最佳方法是简单地将您的状态重命名为 home
,然后使用 $state.go('home');
最简单的解决方案是 NOT 使状态 login.home
嵌套在 login
下。
//.state('login.home', {
.state('home', {
url: '/home',
templateUrl: "home.html",
controller: 'homeController'
});
还有其他解决方案,比如在 login
中为 login.home
创建一个目标,如下所示:
<div ui-view=""></div
但通常情况下,我们不会那样做。只需登录,然后导航到其他一些状态层次结构...
这是代码 http://plnkr.co/edit/JwM8t3oNepP3tE1nUXlM?p=info
的插件 linkcontroller.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'
});
});
您的代码无法正常工作的原因是您正在创建分层状态,而这并不意味着是分层的。通过命名您的状态 login.home
,您是在说 home
是 login
的子级。这意味着当您尝试并且 go('login.home')
ui 路由器正在尝试将登录状态和家庭状态呈现为子级。这意味着要使您当前的布局正常工作,登录模板必须包含自己的 ui-view
标记。解决此问题的最佳方法是简单地将您的状态重命名为 home
,然后使用 $state.go('home');
最简单的解决方案是 NOT 使状态 login.home
嵌套在 login
下。
//.state('login.home', {
.state('home', {
url: '/home',
templateUrl: "home.html",
controller: 'homeController'
});
还有其他解决方案,比如在 login
中为 login.home
创建一个目标,如下所示:
<div ui-view=""></div
但通常情况下,我们不会那样做。只需登录,然后导航到其他一些状态层次结构...