Restangular getList 没有 return 任何东西
Restangular getList does not return anything
我对 angular 和休息 angular 真的很陌生,也许你可以帮助我,
为什么这段代码有效
tunariAppApp.controller('ProductListCtrl',
function ($scope, Restangular){
Restangular.all('products').getList().then(function(result){
$scope.products= result;
});
}
);
而这个没有????
tunariAppApp.controller('ProductListCtrl',
function ($scope, Restangular){
$scope.products = Restangular.all('products').getList();
});
我想将此代码迁移到服务中,如下所示:
tunariAppApp.factory('productData', ['Restangular', function(Restangular){
var Product = Restangular.all('products');
var allProducts = Product.getList();
return{
products: allProducts
};
}]);
但是因为 Restangular.all('products').getList() 没有 return 我可以实现的任何东西。我可以使用 "then approach" 但我没有 $scope 进入服务所以我不知道如何解决这个问题,
有什么想法吗??
getList()
没有 return 数据,它 return 是 http 请求的承诺对象,因为异步获取请求是为了不阻止 js 执行。
angular 工厂的常见做法是 return 承诺本身:
// fire restangular api call and return promise in factory
tunariAppApp.factory('productData', ['Restangular', function(Restangular){
var Product = Restangular.all('products');
return{
products: function() { return Product.getList(); }
};
}]);
// Deal with promise in controller (or anywhere else)
var allProducts = productData.products().then(function(result){
// now you have results from restangular!
});
您也可以使用 Restangular.all('products').getList().$object,这个 returns 一个数组,当数据到达时填充该数组。您还可以在视图等中绑定到此数组,它们将在数据可用时更新。
我对 angular 和休息 angular 真的很陌生,也许你可以帮助我,
为什么这段代码有效
tunariAppApp.controller('ProductListCtrl',
function ($scope, Restangular){
Restangular.all('products').getList().then(function(result){
$scope.products= result;
});
}
);
而这个没有????
tunariAppApp.controller('ProductListCtrl',
function ($scope, Restangular){
$scope.products = Restangular.all('products').getList();
});
我想将此代码迁移到服务中,如下所示:
tunariAppApp.factory('productData', ['Restangular', function(Restangular){
var Product = Restangular.all('products');
var allProducts = Product.getList();
return{
products: allProducts
};
}]);
但是因为 Restangular.all('products').getList() 没有 return 我可以实现的任何东西。我可以使用 "then approach" 但我没有 $scope 进入服务所以我不知道如何解决这个问题,
有什么想法吗??
getList()
没有 return 数据,它 return 是 http 请求的承诺对象,因为异步获取请求是为了不阻止 js 执行。
angular 工厂的常见做法是 return 承诺本身:
// fire restangular api call and return promise in factory
tunariAppApp.factory('productData', ['Restangular', function(Restangular){
var Product = Restangular.all('products');
return{
products: function() { return Product.getList(); }
};
}]);
// Deal with promise in controller (or anywhere else)
var allProducts = productData.products().then(function(result){
// now you have results from restangular!
});
您也可以使用 Restangular.all('products').getList().$object,这个 returns 一个数组,当数据到达时填充该数组。您还可以在视图等中绑定到此数组,它们将在数据可用时更新。