rishi
rishi

Reputation: 1862

strange angularJs variable behavior

Kindly explain me this behavior. I have decalred 2 variables.

$scope.data = {'value' : 123};
    $scope.v1 = $scope.data;

Now if i change the value

$scope.data.value = 2;

and try to print

alert('old value is '+$scope.v1.value);

It gives me output as 2 whereas I think it should give me value as 123. Kindly tell me that is it the same behavior like Java where one variable has different instances and change in one reflects in another ?

Upvotes: 1

Views: 37

Answers (2)

Cory Silva
Cory Silva

Reputation: 2811

Yes. You want to use angular.copy() to solve your current issue.

Anyways this all happens because of making one Object equal to another is assigning a reference; not creating a copy.

Upvotes: 1

Eylen
Eylen

Reputation: 2677

As you're guessing you are not creating a new object when you assign $scope.data to $scope.v1. You're just "pointing" $scope.v1 to $scope.data which implies that any change that you do to $scope.data will be reflected also in $scope.v1.

If you want to have different elements you should make a copy of the object. Look at angular.copy

Upvotes: 1

Related Questions