Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   присвоение объекта (https://javascript.ru/forum/angular/40864-prisvoenie-obekta.html)

virus-07 22.08.2013 13:05

присвоение объекта
 
Не до конца понимаю логику 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();
        }
}


Надеюсь, понятно выражаюсь.

virus-07 22.08.2013 13:37

Вполне вероятно, моя идея проверки данных неверна. Тогда подскажите пожалуйста, где бы могла быть доходчиво описана логика проверки данных на сервере.

nerv_ 22.08.2013 14:00

Цитата:

Сообщение от virus-07
$('#user_popup').fadeIn();

из контроллера напрямую с dom не работают - ng-show, ng-hide

virus-07 22.08.2013 14:04

Это заплатка, мне хочется плавной анимации, но сперва хочу понять как работать с формами, а потом уже эффектами заниматься.
Как производить работу с объектами, применяя изменения только в случае успеха?

nerv_ 22.08.2013 14:23

Цитата:

Сообщение от virus-07
но сперва хочу понять как работать с формами

http://angular.ru/guide/forms

kdv 29.08.2013 14:41

" Почему, если я пытаюсь работать с 2 независимыми объектами?

var user = {id:'2', name:'yandex', email:'yandex@yandex.ru'}
$scope.user = user;
$scope.user_upd = user;
"

Потому что они не независимы. Они используют одну область памяти. Объекты присваиваются по адресу, если хочешь сделать их независимыми, то

1) Используй клонирование
или
2) Используй явное присвоение свойств и методов объекта от другого через extend

Shitbox2 29.08.2013 17:52

$scope.user = user;
$scope.user_upd = angular.copy(user);

Вот теперь они независимые


Часовой пояс GMT +3, время: 12:14.