我有这段代码
$scope.addToOrder = function(index) {
var tempItem = $scope.item;
if (tempItem[index].validate == true){
if (_.isEmpty($scope.item2) == true) {
$scope.item2.push(tempItem[index]);
} else {
for (var i = 0; i < $scope.item2.length; i++) {
if ($scope.item2[i] == tempItem[index]) {
break;
}
if (i == $scope.item2.length - 1) {
$scope.item2.push(tempItem[index]);
}
}
}
}
}
我想将数据从一个对象推送到另一个对象(item到item2),它运行良好,但是当我更改item中的数据时,item2更新我也不想要这个。
我错过了什么?
答案 0 :(得分:2)
原样,您正在使用对象引用。然后,如果修改一个,则另一个也被修改。
您可以使用angular.copy
$scope.addToOrder = function(index) {
var tempItem = $scope.item;
var itemCopy = angular.copy(tempItem[index]);
if (tempItem[index].validate == true){
if (_.isEmpty($scope.item2) == true) {
$scope.item2.push(itemCopy);
} else {
for (var i = 0; i < $scope.item2.length; i++) {
if ($scope.item2[i] == tempItem[index]) {
break;
}
if (i == $scope.item2.length - 1) {
$scope.item2.push(itemCopy);
}
}
}
}
}
答案 1 :(得分:1)
使用angular.copy按值处理
angular.copy($scope.item1, $scope.item2);
或
$scope.item1 = angular.copy($scope.item2);