Почему Angular не связывает данные при копировании объекта из другого объекта?
Мы создали простой jsfiddle, чтобы проиллюстрировать мой вопрос:
Html:
<span ng-click="overwrite(p)">{{ p.id }}: {{ p.name }}</span>
Javascript:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
var products = [{id:1, name:'first'}, {id:2, name:'second'}];
$scope.products = products;
var prod = {id: 3, name:'third'};
$scope.overwrite = function(p){
p.id = 4;
p.name = 'forth';
p = prod; // this doesn't work nor does angular.copy(prod)
}
}
Как вы можете видеть, когда я устанавливаю свойства вручную, значения связываются. Но когда я перезаписываю объект, ничего не происходит. Как это возможно? И что мне делать, когда я хочу восстановить объект в нем?исходное состояние?
Представьте, что я создаю объект резервного копирования, используяvar productBackup = angular.copy(product)
, Затем я делаю изменения в исходном продукте, а затем решаю отменить свои изменения. Я хочу сделать это с помощьюproduct = productBackup
, Но это нет работа! В этом случае мне нужно установить все свойства вручную, как это?
product.id = productBackup.id;
product.name = productBackup.name;
etc...