我将 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/