如何在页面重新加载时延迟我的应用程序控制器的初始化(路由器中的“ 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/

10-16 15:30