【问题标题】:angularjs resolve in app.configangularjs 在 app.config 中解析
【发布时间】:2018-08-14 15:28:57
【问题描述】:

在下面的示例中,我希望 logincheck 在进入 checkBasket 之前解决,因为后者取决于前一个。不,我不想将代码放在同一个函数中,因为这两者都在其他路线中多次使用。 对如何做有什么建议吗?

        .when("/bananaBoat", {
            templateUrl: "views/banana.html",
            resolve: {
                logincheck: logincheck,
                checkBasket: checkBasket,
            }
        })

感谢您的帮助

编辑:

resolve 中的函数如下:

var logincheck = function ($http, $routeParams, $location, $rootScope) {
    var abc = $http.get('/api/resources/getUser');

    abc.then(function (data) {
            if (!($rootScope.user)) {
                $location.url('/');
            }
        }, function () {
            $location.url('/');
        })
        .catch(function (err) {
            console.log(err)
        })
};

var checkBasket= function ($http, $rootScope, $location, $route) {
    if (!($rootScope.user.basket == ""))
        $location.url("/");
};

【问题讨论】:

  • 我需要他们的结果。我在 checkBasket 上有一些依赖于 logincheck 的验证

标签: angularjs asynchronous promise resolve


【解决方案1】:

在处理每条路由之前将调用解析,您可以检查用户是否已登录,此 isLoggedIn 变量将在控制器中可用

resolve:{
    isLoggedIn:function(sessionService, $state, $rootScope){
            return sessionService.checksession();
        }
    }
}

【讨论】:

  • 我不明白。这个 sessionService 是从哪里来的?
  • '使用严格'; app.factory('sessionService', function($http){ var return_obj = {}; return_obj.checksession = function(){ return $http.post("url to your backend"); } return return_obj; });
  • 我正在做一些非常不同的事情。检查编辑。谢谢你:)
猜你喜欢
  • 2023-03-29
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2015-06-07
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多