如何在页面重新加载时延迟我的应用程序控制器的初始化(路由器中的“ resolve”属性)?还是更好的问题,如何在我的控制器检索到用户对象之前,特别是在页面重新加载时,将视图延迟?
我目前在我的ApplicationCtrl的顶部
if (localStorage.getItem('token') && localStorage.getItem('token') != 'null')
{
sessionStorage.setItem('token', localStorage.getItem('token'))
}
if (sessionStorage.getItem('token') && sessionStorage.getItem('token') != 'null')
{
UserSvc.getUser()
.then(function (response)
{
loadUser(response.data)
})
.then(function (error)
{
if (error) $scope.logout()
})
}
这将检查auth令牌,然后使用该令牌从数据库中获取用户对象。
但是问题在于页面出现后用户数据卡住了,因此在用户的显示名称在几毫秒后突然出现之前,导航栏为空。
如何延迟此视图的显示,直到初始用户请求完成?
最佳答案
弄清楚了。我刚刚创建了一个顶层$ scope布尔值$ scope.initResolved,它会在完成第一次用户检查(无论是否检索到用户)后变为true,并将标头和ng-view设置为ng-if =“ initResolved”
$scope.initResolved = false
if (localStorage.getItem('token') && localStorage.getItem('token') != 'null')
{
sessionStorage.setItem('token', localStorage.getItem('token'))
}
if (sessionStorage.getItem('token') && sessionStorage.getItem('token') != 'null')
{
UserSvc.getUser()
.then(function (response)
{
loadUser(response.data)
$scope.initResolved = true
})
.then(function (error)
{
if (error) $scope.logout()
$scope.initResolved = true
})
}
else if ($location.url() == "")
{
$location.path('/welcome')
$scope.initResolved = true
}
else $scope.initResolved = true
关于javascript - 应用程序重新加载时的 Angular 解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31056920/