请解释一下这种行为。我已经对两个变量进行了decalred。
$scope.data = {'value' : 123};
$scope.v1 = $scope.data;
现在,如果我改变了值
$scope.data.value = 2;
并尝试打印
alert('old value is '+$scope.v1.value);
它给我的输出为2,而我认为它应该给我的值为123。 请告诉我,它与 Java 的行为相同,其中一个变量具有不同的实例,而一个变量反映在另一个变量中?
答案 0 :(得分:1)
当您将$ scope.data分配给$ scope.v1时,您猜测自己没有创建新对象。您只是将$ scope.v1“指向”$ scope.data,这意味着您对$ scope.data所做的任何更改也将反映在$ scope.v1中。
如果您想拥有不同的元素,则应该复制该对象。看angular.copy
答案 1 :(得分:1)
是。您想使用angular.copy()来解决当前问题。
无论如何,这一切都发生是因为使一个Object等于另一个是分配引用;没有创建副本。