javascript - Restangular getList 不返回任何东西

标签 javascript angularjs service restangular

我对 angular 和 restangular 真的很陌生,也许你能帮我,

为什么这段代码有效

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() 不返回任何我可以实现的东西。我可以使用“then approach”,但我没有 $scope 到服务中,所以我不知道如何解决这个问题,

有什么想法吗??

最佳答案

getList() 不返回数据,它为 http 请求返回一个 promise 对象,因为请求是异步获取的,以便不阻止 js 执行。

Angular 工厂的常见做法是返回 promise 本身:

// 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!
});

关于javascript - Restangular getList 不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015267/

相关文章:

javascript - 我可以在 JS 中使用内置 HTML5 电子邮件验证的浏览器吗?

java - 像这个网站一样从客户的剪贴板中获取内容

angularjs - UI Bootstrap 与 Angular Material

Android:BatteryLevel 小部件未更新

android - START_STICKY android 服务未运行

android - 我可以在没有 Activity 或接收器的情况下启动服务吗?

javascript - 如何抽象地实现JavaScript

javascript - 尝试理解在使用 babel 进行 React.js 时收到的警告消息

angularjs - AngularJS 中下拉值的时间

javascript - 模板中的 AngularJS 调试