我有一个$state。go调用,在两次工厂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
}
});
据我所知,你的代码片段
有两个问题状态定义
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
。
是$state.go
不是$scope.go
请在您的控制器中使用以下代码。
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) {
if (resp !== undefined) {
$state.go("dashboard");
} else {
//Not a valid login
}
});