我试着在几个小时内提出一个简单的索取请求,但它只是不起作用。我有一个负责数组的服务,当我定义我为restAngular函数构建的调用服务的数组时。
第一项服务:
app.factory('ServiceArray',function($filter,restAngularService){
var Cards = restAngularService.getC();
console.log(Cards);
return{
getCards : function(){
return Cards;
}
}
//more code...
}我从console.log中得到未定义的
restAngular服务:
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得到:
对象,对象
控制器代码:
$scope.Cards = ServiceArray.getCards();
condole.log($scope.Cards);我从console.log中得到未定义的
发布于 2015-12-25 19:29:15
尝试从您的getC方法中返回如下承诺:
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;
}
}然后在控制器中使用此服务,如下所示:
var Cards;
restAngularService.getC().then(function(cards){
Cards = cards;
console.log(Cards);
});UPD,因为您的方法baseAccounts.getList()是异步的,所以它返回诺言。所以你不能就这么同步地叫它。因此,您调用它,并添加一个回调与then。这个回调将在您的承诺得到解决后执行(例如从网络中获取JSON )。
https://stackoverflow.com/questions/34465611
复制相似问题