Angular的路由解析不等待promise

Angular route resolve not waiting for promise

本文关键字:等待 promise 路由 Angular      更新时间:2023-09-26

我是angular的新手,我有一个用户路由,我试图在渲染视图之前解析用户对象。我已经注入$q并延迟了承诺,但是,在承诺返回之前,视图仍然在加载。

路线:

.when('/user/:userId', {
    templateUrl: 'user/show.html',
    controller: 'UserController',
    resolve: {
        user: userCtrl.loadUser
    }
})
控制器

var userCtrl = app.controller('UserController', ['$scope',
    function($scope){
        $scope.user = user; // User is undefined
        // This fires before the user is resolved
        console.log("Fire from the controller");
    }]);
userCtrl.loadUser = ['Restangular', '$route', '$q',
    function(Restangular, $route, $q) {
        var defer = $q.defer();
        Restangular.one('users', $route.current.params.userId).get().then(function(data) {
            console.log("Fire from the promise");
            defer.resolve(data);
        });
        return defer.promise;
    }];

在查看Github问题后,我发现了一个类似的问题,并通过以下方式解决了它:

userCtrl.loadUser = ['Restangular', '$route',
    function(Restangular, $route) {
        return Restangular.one('users', $route.current.params.userId).get();
    }];