我正在使用带有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);
});
但这不起作用。我应该如何添加到集合中,而不是每次创建新项目时都重新获取整个集合?
答案 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);
});