Я сталкиваюсь с чем-то в своем javascript-коде, который я называю его ошибкой, но я считаю, что это технически особенность! Итак, у меня есть json-объект, я создаю новый и выравниваю его с первым. Теперь любое изменение, которое я выполняю на втором, будет затронуто и на оригинальном!
Вот JSfiddle простого примера, который я создал: https://jsfiddle.net/Lt7aP/2736/
с учетом кода:
$scope.a = {
name: "mike",
age: 10
};
$scope.b = $scope.a;
$scope.b.name = "john";
не следует ли a.name быть "mike" и только b.name станет "john"? почему это происходит с обоими из них?
Это определенно не ошибка. Вы привязаны к $scope.b
по ссылке. Так как $scope.b
, то будет $scope.a
.
Вы должны использовать angular.copy
для разных ссылок.
$scope.b = angular.copy($scope.a);