RESTAngular:GET 请求 - 对象数组
RESTAngular: GET request - objects array
我试图发出几个小时的简单获取请求,但它无法正常工作。
我有一个负责数组的服务,当我定义数组时,我调用了为 restAngular 函数构建的服务。
第一个服务:
app.factory('ServiceArray',function($filter,restAngularService){
var Cards = restAngularService.getC();
console.log(Cards);
return{
getCards : function(){
return Cards;
}
}
//more code...
}
我从 console.log
得到 undefined
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
得到 undefined
尝试从您的 getC 方法中 return 承诺,如下所示:
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()
是异步的,所以 return 是承诺。所以你不能只是同步调用它。所以你调用它,并用 then
添加一个回调。当你的承诺被解决时,这个回调将被执行(例如你从网上得到你的JSON)
我试图发出几个小时的简单获取请求,但它无法正常工作。 我有一个负责数组的服务,当我定义数组时,我调用了为 restAngular 函数构建的服务。
第一个服务:
app.factory('ServiceArray',function($filter,restAngularService){
var Cards = restAngularService.getC();
console.log(Cards);
return{
getCards : function(){
return Cards;
}
}
//more code...
}
我从 console.log
得到 undefinedrestAngular 服务:
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
得到 undefined尝试从您的 getC 方法中 return 承诺,如下所示:
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()
是异步的,所以 return 是承诺。所以你不能只是同步调用它。所以你调用它,并用 then
添加一个回调。当你的承诺被解决时,这个回调将被执行(例如你从网上得到你的JSON)