5

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

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

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

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

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

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

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

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

4

2 回答 2

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);
});
于 2014-06-25T11:11:17.367 回答
2

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

如果您将其更改为以下内容,它应该可以工作:

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

希望它有效!

于 2013-10-11T01:40:47.150 回答