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

时间:2013-09-09 12:26:48

标签: angularjs restangular

我正在使用带有AngularJS应用程序的Restangular并从一个简单的CRUD应用程序开始。我遇到的问题是了解如何将新项目添加到预先存在的集合中。

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

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

通过表单创建一个新项目并在服务器上创建:

$scope.data.items.post(newitem);

我想将这个新项目添加到预先存在的集合中但不确定如何。 restangular sample只是再次调用Restangular.all('items'),鉴于所有信息都存在,这似乎非常浪费。理想情况下,我想做这样的事情:

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

但这不起作用。我应该如何添加到集合中,而不是每次创建新项目时都重新获取整个集合?

2 个答案:

答案 0 :(得分:3)

它不起作用,因为你分配给data.items的是一个承诺。

如果将其更改为以下内容,则应该有效:

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

希望它有效!

答案 1 :(得分:3)

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

$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);
});