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 一个数组,当数据到达时填充该数组。您还可以在视图等中绑定到此数组,它们将在数据可用时更新。