当我改变一个变量的值时,另一个变量也在变化

时间:2016-05-19 09:27:37

标签: javascript arrays angularjs

我通过使用以下方法从数据库中获取值并将输出数据插入到两个变量中,当我更改$ scope.contactRole中的值时,接触到的值为' contactRoleForTrace'也在改变,但我不想改变它。你能告诉我我该怎么办?

var contactRoleForTrace = [];
$scope.getUserRoles = (function () {
    //Method to get data from database
    intakeAppFactory.getRoles(item)
        .success(function (data) {
            contactRoleForTrace = data;
            $scope.contactRole = data;
        }).error(function (data, status) {
            $scope.error = "An Error has occured!";
        });
});

1 个答案:

答案 0 :(得分:6)

目前,您直接将data对象引用分配给contactRoleForTrace& $scope.contactRole,因此$scope.contactRole / data发生的任何更改都会自动更新contactRoleForTrace变量,因为它们与同一参考(data对象)绑定。

您应该使用angular.copy来创建data对象的克隆,以及contactRoleForTrace& $scope.contactRole将指向不同的参考。

contactRoleForTrace = angular.copy(data);