Angularjs 将新创建的对象添加到Restangular集合

Angularjs 将新创建的对象添加到Restangular集合,angularjs,restangular,Angularjs,Restangular,我将Restangular与AngularJS应用程序结合使用,并从一个简单的CRUD应用程序开始。我面临的问题是理解如何将新项目添加到现有集合中 在控制器内,在服务中获得预先存在的集合,并在范围内提供: $scope.data.items = Restangular.all('items'); 通过表单创建新项目并在服务器上创建: $scope.data.items.post(newitem); 我想将此新项目添加到现有的集合中,但不确定如何添加。just再次调用restanglar.al

我将Restangular与AngularJS应用程序结合使用,并从一个简单的CRUD应用程序开始。我面临的问题是理解如何将新项目添加到现有集合中

在控制器内,在服务中获得预先存在的集合,并在范围内提供:

$scope.data.items = Restangular.all('items');
通过表单创建新项目并在服务器上创建:

$scope.data.items.post(newitem);
我想将此新项目添加到现有的集合中,但不确定如何添加。just再次调用
restanglar.all('items')
,考虑到所有信息都存在,这似乎是非常浪费的。理想情况下,我想做这样的事情:

$scope.data.items.post(newitem).then(function(response) {
  $scope.data.items.push(newitem);
});

但这是行不通的。我应该如何添加到集合中,而不是在每次创建新项目时仅重新蚀刻整个集合?

这不起作用,因为您分配给data.items的是一个承诺

如果将其更改为以下内容,则应能正常工作:

Restangular.all('items').then(function(items) {
    $scope.data.items = items
});

希望它能起作用

您可以使用承诺的
$object
,并在POST回复中返回新添加的项目。然后,您可以将该项拼接到重新启动的集合中。例如:

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

$scope.data.items.post(newitem).then(function (response) {
    $scope.data.items.splice($scope.data.items.length, 0, response);
});

你解决了吗?是的@mgon提供了正确的解决方案。