Итак, я работаю над проектом с использованием AngularJS, где мне нужно иметь возможность сравнивать значения объекта в области с ранее записанными значениями. Я делаю это с помощью алгоритма, такие, как показано ниже:Угловое непреднамеренное связывание/зеркальное отображение объектов
function() {
var data = [
{ id: 1, key: 'value', foo: 'bar'},
{ id: 2, key: 'value', foo: 'bar'}
]
$scope.oldTarget = data[0];
$scope.target = data[0];
}
Теперь, если бы я сделать:
function() {
$scope.target.foo = 'fighters';
if ($scope.target != $scope.oldTarget) console.log('Target was modified');
console.log($scope.target);
console.log($scope.oldTarget);
}
Он будет:
{ id: 1, key: 'value', foo: 'fighters'}
{ id: 1, key: 'value', foo: 'fighters'}
Мое предположение, что AngularJS автоматически связывает две цели target и oldTarget и зеркалирует любые изменения, сделанные для цели на oldTarget. Так ли это, и если да, то в любом случае я должен предотвратить это? Если нет, что я делаю, это заставляет это делать это?
Таким образом, вы можете попробовать использовать угловую копию (данные), чтобы предотвратить это. – Rasalom