我有一个$ state.go调用,它在两个Factory HTTP Post调用之后运行,它会重定向到Dashboard样式的页面。但是,关联模板文件在任何时候都不会加载,实质上是加载白页。此时刷新会导致整页加载。
我不清楚原因是什么,因为路由器中的设置与我在其他页面中看到的预期一致。我已附上以下代码。
//pertinent router code
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('login', {
url: "/login",
templateUrl: "js/users/templates/login.html",
controller: 'LoginController'
})
.state('dashboard', {
url: '/dashboard',
views: {
'menuContent' :{
abstract: true,
templateUrl: 'js/users/templates/dashboard.html',
controller: 'DashboardController'
}
}
})
//Segment from LoginController fired by form submit
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
if (resp !== undefined) {
$scope.go("dashboard");
} else {
//Not a valid login
}
});
答案 0 :(得分:1)
据我所知,您的代码段存在两个问题
州定义
views: {
'menuContent' :{
abstract: true,
templateUrl: 'js/users/templates/dashboard.html',
controller: 'DashboardController'
}
}
您正在视图中设置属性abstract: true
,这是设置它的错误位置,它应该是状态定义的一部分。此外,如果将状态设置为抽象将引发异常,因为无法直接导航抽象状态。我的建议是从你所在的国家删除该财产,因为你显然不需要它。
您可以在ui-router docs
了解有关抽象行为的更多信息抽象状态永远不会被直接激活,但可以提供 继承属于其共同的儿童状态。
州重定向
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
if (resp !== undefined) {
$scope.go("dashboard");
} else {
//Not a valid login
}
});
您引用$scope.go
时应该是$state.go
。
答案 1 :(得分:0)
其$state.go
而非$scope.go
请在控制器中使用以下代码。
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
if (resp !== undefined) {
$state.go("dashboard");
} else {
//Not a valid login
}
});