我试图提出一个简单的获取请求几个小时,但它只是不起作用。 我有一个负责数组的服务,当我定义数组时,我调用我为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
获取未定义答案 0 :(得分:0)
尝试从你的getC方法返回一个promise:
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()
是异步的,它会返回promise。所以你不能只是同步调用它。所以你打电话给它,并用then
添加一个回调。当您的承诺得到解决时(例如,您从网上获取JSON),将执行此回调