присвоение объекта
Не до конца понимаю логику angularjs. Объясню, что я пытаюсь сделать, а кто-нибудь скажет мне, почему я дурак.
Есть объект user{email:'some@some.ru', login:'login'}. Этот объект транслируются в обычный параграф <p>{{user.email}}</p>. Я добавляю форму, через которую можно поменять логин и почту. Логика такая: создать копию user для транслирования в форму и изменения, если проверку проходит — присваиваем в первичный объект, если нет — то и откатывать нечего. То есть var user_upd = user; и транслирую это в инпуты. Но как только я изменяю значение в инпуте, у меня меняется значение в параграфе. Почему, если я пытаюсь работать с 2 независимыми объектами? Вот маленький контроллер. Изменения в $scope.user_upd отражаются в $scope.user :( function userCtrl($scope){ var user = {id:'2', name:'yandex', email:'yandex@yandex.ru'} $scope.user = user; $scope.user_upd = user; $scope.showUserUpd = function(){ // форма для изменения логина $('#user_popup').fadeIn(); } } Надеюсь, понятно выражаюсь. |
Вполне вероятно, моя идея проверки данных неверна. Тогда подскажите пожалуйста, где бы могла быть доходчиво описана логика проверки данных на сервере.
|
Цитата:
|
Это заплатка, мне хочется плавной анимации, но сперва хочу понять как работать с формами, а потом уже эффектами заниматься.
Как производить работу с объектами, применяя изменения только в случае успеха? |
Цитата:
|
" Почему, если я пытаюсь работать с 2 независимыми объектами?
var user = {id:'2', name:'yandex', email:'yandex@yandex.ru'} $scope.user = user; $scope.user_upd = user; " Потому что они не независимы. Они используют одну область памяти. Объекты присваиваются по адресу, если хочешь сделать их независимыми, то 1) Используй клонирование или 2) Используй явное присвоение свойств и методов объекта от другого через extend |
$scope.user = user; $scope.user_upd = angular.copy(user); Вот теперь они независимые |
Часовой пояс GMT +3, время: 12:14. |