Javascript 访问ui路由器解析控制器中的对象

Javascript 访问ui路由器解析控制器中的对象,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个函数从ui router resolve中的API返回一些数据,并希望访问控制器中的该对象 UI路由器: .state('base.home', { url:'/', templateUrl: 'views/home.html', controller: 'homeCtrl', resolve:{ testResolve: function($http) { var api = 'http://myapi.in

我有一个函数从ui router resolve中的API返回一些数据,并希望访问控制器中的该对象

UI路由器:

.state('base.home', {

    url:'/',
    templateUrl: 'views/home.html',
    controller: 'homeCtrl',
    resolve:{

        testResolve: function($http) {

            var api = 'http://myapi.internet/posts';

            $http.get(api).then(function(res){ 

                console.log(res.data);      // data is there! 

                return(res.data);

            })
        }
    }
})
.controller('homeCtrl',function($scope, $http, $state, testResolve){

    console.log(testResolve); // undefined :(

})
控制器:

.state('base.home', {

    url:'/',
    templateUrl: 'views/home.html',
    controller: 'homeCtrl',
    resolve:{

        testResolve: function($http) {

            var api = 'http://myapi.internet/posts';

            $http.get(api).then(function(res){ 

                console.log(res.data);      // data is there! 

                return(res.data);

            })
        }
    }
})
.controller('homeCtrl',function($scope, $http, $state, testResolve){

    console.log(testResolve); // undefined :(

})

我搜索了一些类似的主题,找到了上面的解决方案,但是我的对象仍然在我的控制器中出现
未定义的

您需要
返回$http.get(api).
您的
$http
正在将数据返回到解析,但解析没有返回任何内容。噢,呸!但是如何从$http范围内返回呢?我想我必须回报一个承诺,对吧?
$http
是一个承诺。只需在通话开始时添加
return
。啊!是的,解决了!非常感谢。