我有两个数组:
$scope.grid.data and $scope.grid.backup
我使用以下脚本一次比较每个元素中的数据:
for (var i = 0, len = $scope.grid.data.length; i < len; i++) {
if (!angular.equals($scope.grid.data[i], $scope.grid.backup[i])) {
var rowData = $scope.grid.data[i]
var idColumn = $scope.entityType.toLowerCase() + 'Id';
var entityId = rowData[idColumn];
entityService.putEntity($scope.entityType, entityId, $scope.grid.data[i])
.then(function (result) {
angular.copy(result, $scope.grid.data[i]);
angular.copy(result, $scope.grid.backup[i]);
}, function (result) {
alert("Error: " + result);
})
}
}
和以下更新数据库:
putEntity: function (entityType, entityId, entity) {
var deferred = $q.defer();
EntityResource.putEntity({ entityType: entityType, entityId: entityId }, entity,
function (resp) {
deferred.resolve(resp);
}, function (resp) {
deferred.reject('Error updating');
});
return deferred.promise;
}
此脚本正确地注意到更改并更新数据库。
但是,当 putEntity 返回结果并尝试将结果复制到 $scope.grid.data[i] 和 $scope.grid.backup[i] 时会出现问题
这会在稍后发生,当它尝试这样做时,它总是试图将其放入元素 11。
有谁知道如何确保将 putEntity 返回的数据复制回 grid.data 和 grid.backup 数组的正确元素?