变量有两种方式绑定,所以当一个变化时,另一个变化也是如此(未受控制)

时间:2015-09-16 13:27:40

标签: angularjs

http://plnkr.co/edit/iHSIyuQ0SF61m1VCgdKj?p=preview

var app = angular.module('test-app', []);

app.controller('test-ctrl', function ($scope, $http) {
    testing();

    function testing() {
        $http.get('data.txt')
        .success(function (data) {
            var test1 = data;
            var test2 = data;
            test2.id = 5;
            console.log(test1.id);
            console.log(test2.id);
            $scope.test1 = test1
            $scope.test2 = test2
        })
        .error(function () {})
    };
});
双方都回归“5”为什么?我需要新数据和原始快照。

1 个答案:

答案 0 :(得分:2)

因为test1test2在内存中引用相同的对象。如果您需要不同的独立副本clone the object

.success(function(data){
  var test1 = angular.copy(data);
  var test2 = angular.copy(data);