Дело в следующем: в личном кабинете пользователя делаю функционал, с помощью которого пользователь мог бы изменять свои личные данные. Выглядит он так: с сервера подгружаются уже существующие данные пользователя. На странице имеется форма с полями, в которых отображаются уже существующие данные пользователя. Эти поля выглядят примерно вот так:
<input ng-model="myData.name">
(использую ангуляровскую привязку ng-model)
Пользователь будет иметь возможность изменять свои данные, корректируя их в этих полях. В конце формы две кнопки: "Сохранить изменения" и "Отменить изменения". Для того, чтобы работала кнопка "Отменить изменения" я написал так:
$scope.user = $rootScope.myData
то есть чтобы в объекте $scope.user сохранить уже существующие данные пользователя, а потом если пользователь нажмет "Отменить изменения" - в таком случае чтобы сработала функция, которая "восстановит" данные.
Вот такой я сделал эту функцию:
$scope.cancel = function () {
$rootScope.myData = $scope.user;
}
Но как оказалось: если меняешь данные в поле (которые привязаны
к объекту
$rootScope.myData
), то они меняются не только в объекте $rootScope.myData, но и в объекте $scope.user. Какая-то "чересчур мудрая" привязка у AngularJs: меняет данные не только в том объекте, к которому привязана, но и в том, из которого скопированы данные в привязанный объект.
Можно это как-то предотвратить или писать этот функционал без Ангуляровской привязки ?