首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTAngular:获取请求-对象数组

RESTAngular:获取请求-对象数组
EN

Stack Overflow用户
提问于 2015-12-25 19:11:09
回答 1查看 545关注 0票数 0

我试着在几个小时内提出一个简单的索取请求,但它只是不起作用。我有一个负责数组的服务,当我定义我为restAngular函数构建的调用服务的数组时。

第一项服务:

代码语言:javascript
复制
app.factory('ServiceArray',function($filter,restAngularService){

        var Cards = restAngularService.getC();
        console.log(Cards);
return{
            getCards : function(){
                return Cards;
            }
}
//more code...

}

我从console.log中得到未定义的

restAngular服务:

代码语言:javascript
复制
 app.factory('restAngularService',function($filter,Restangular){
    var Accounts = Restangular.all('api');
    var baseAccounts = Accounts.one('get');
    return{
        getC : function(){
            var Cards = [];
            if(baseAccounts.get()){
                baseAccounts.getList().then(function(b) {
                    console.log(b.plain());
                    Cards = b.plain();
                    return Cards;

                });

            } else {
                return Cards = [{}];
            }
    }
}

我从这个console.log得到:

对象,对象

控制器代码:

代码语言:javascript
复制
$scope.Cards = ServiceArray.getCards();
condole.log($scope.Cards);

我从console.log中得到未定义的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-25 19:29:15

尝试从您的getC方法中返回如下承诺:

代码语言:javascript
复制
app.factory('restAngularService',function($filter,Restangular, $q){
    var Accounts = Restangular.all('api');
    var baseAccounts = Accounts.one('get');

    var deferred = $q.defer();

    return{
        getC : function(){
            var Cards = [];
            if(baseAccounts.get()){
                baseAccounts.getList().then(function(b) {
                    console.log(b.plain()[0]);
                    Cards = b.plain()[0];
                    deferred.resolve(Cards);
                });
            } else {
                deferred.resolve([{}]);
            }

           return deferred.promise;
    }
}

然后在控制器中使用此服务,如下所示:

代码语言:javascript
复制
var Cards;
restAngularService.getC().then(function(cards){
  Cards = cards;
  console.log(Cards);
});

UPD,因为您的方法baseAccounts.getList()是异步的,所以它返回诺言。所以你不能就这么同步地叫它。因此,您调用它,并添加一个回调与then。这个回调将在您的承诺得到解决后执行(例如从网络中获取JSON )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34465611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档