javascript - 在 Restangular 集合上使用 lodash 数组函数

标签 javascript angularjs restangular lodash

我将 Restangular 与 AngularJS 一起使用,我想在 Controller 的函数中迭代一个集合,我需要在其中修改 Restangular 返回的集合:

var OrderController = [ '$scope', '$http', 'Restangular',
  function($scope, $http, Restangular) {
    $scope.orders = Restangular.all('orders').getList();
    $scope.toggleOrder = function(order) {
      _.forEach($scope.orders, function(order) {
        console.log(order); // This is not an order!
        order.someProperty = false; // My goal
      });
    });
  }];

我认为问题在于 $scope.orders 是一个 promise ,而不是一个实际的数组,所以 _.forEach 尝试迭代 promise 的属性的对象。我用 angular.forEach 得到了相同的结果。

如何迭代 Restangular 资源集合?我也想访问 lodash 的所有集合函数,例如 _.filter

最佳答案

Restangular.all('orders').getList() - 是一个 promise ,而不是数组。

使用 $object 分配你的列表:

$scope.orders = Restangular.all('orders').getList().$object;

在请求完成之前,列表将是一个空数组。

更新问题的完整代码(包括根据要求完成的订单修改)

$scope.orders = [];

function modifyOrders(orders){ ... }

Restangular.all('orders').getList().then(function(orders){
 modifyOrders(orders);
 $scope.orders=orders;
});

$scope.toggleOrders = function(toggledOrder){
 _.forEach($scope.orders, function(order) { ... });
};

关于javascript - 在 Restangular 集合上使用 lodash 数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989781/

相关文章:

asp.net - 开发不依赖于 JavaScript 的 ASP.NET 应用程序的技巧

javascript - AngularJS Bootstrap 模式在完整日历事件 onclick 上卡住

javascript - 从文件引用时,ng-view 内的脚本不起作用(JQuery 在 Angular 之前加载)

javascript - Angular JS 和 Restangular : How to include a header and parameters in POST request?

asp.net - 如何使用 Rest Angularjs 将集合发布到 Web Api

javascript - 设置HTML5音频位置

javascript - 将输入值作为字符串插入标签中

angularjs - 使用嵌套 spy 测试对 Restangular 的服务调用

javascript - knockout JS 嵌套数组。将项目添加到子数组

javascript - AngularJS 服务内的模拟服务