我在更新对象时遇到问题,它在模型中创建了此实例(singleOrder)的副本,而不是更新现有的实例。我无法清除整个$ scope并重新加载,因为我只更新了部分对象。
这是我的保存功能:
$scope.saveDetails = function(singleOrder, data, status) {
OrdersService.updateOrders(singleOrder.order)
.success(function(data, status) {
angular.extend(singleOrder, data);
})
}
singleOrder 与我的主 OrderDetails 对象的实例有关,用于 ng-repeat
<div ng-repeat="singleOrder in orderDetails track by $index">
以下是我的OrdersService中调用的函数,如果有帮助的话:
getData.updateOrders = function(data){
var url = '/service/rest/orders';
return $http.post(url, data)
};
感谢您提供的任何帮助。
的更新:
我已尝试弄乱track by
,并收到以下结果:
<div ng-repeat="singleOrder in orderDetails track by $index">
保存内容正常,但在dom上创建重复订单。
<div ng-repeat="singleOrder in orderDetails track by singleOrder.order.id">
这适用于每个订单都有唯一ID。我可以保存好并且它不会在dom中创建副本,但我在控制台中得到不允许在转发器中重复。
对于为什么会发生这种情况感到困惑。欢迎任何想法!
答案 0 :(得分:2)
angular.extend()返回目标对象,所以也许你可以做这样的事情
OrdersService.updateOrders(singleOrder.order)
.success(function(data, status) {
singleOrder = angular.extend(singleOrder, data);
})
但是在我看来,当服务器返回客户端需要的整个对象时,它会更好。代码会更容易。
答案 1 :(得分:0)
为了跟进这一点,似乎问题不在于Angular,而是对象中的数据。我无法确切地说出问题的确切部分,但在内容更新后,这开始使用track by $index
。
感谢大家的帮助!