Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular JS(v1)-$scope太聪明了?_Angularjs_Variables_Scope - Fatal编程技术网

Angularjs Angular JS(v1)-$scope太聪明了?

Angularjs Angular JS(v1)-$scope太聪明了?,angularjs,variables,scope,Angularjs,Variables,Scope,我在控制器中有: $http.post("./post", { get: id }) .then(function(res) { $scope.acct = res.data; $scope.orig = calcThis(res.data); }); 说明:在这篇$http.post之后,我预计会出现以下情况: $scope.acct.post_data 及 ..其中子元素_1、_2、_3作为函数calcThis()的结果进行赋值 然而,我

我在控制器中有:

$http.post("./post", { get: id })
    .then(function(res) {
        $scope.acct = res.data;
        $scope.orig = calcThis(res.data);
    }); 
说明:在这篇$http.post之后,我预计会出现以下情况:

$scope.acct.post_data

..其中子元素_1、_2、_3作为函数calcThis()的结果进行赋值

然而,我得到的却是:

$scope.acct.post_data
$scope.acct._1
$scope.acct._2
$scope.acct._3

普朗克:

解释与问题:尽管$scope.acct和$scope.orig使用相同的post-ed数据,但它们在DOM上有不同的用途

  • 为什么$scope.acct继承$scope.orig,而它们是不同的变量/对象(正确的术语是什么)
  • 如何使它们成为两个独立的变量/对象

多谢各位。我感谢你的回答

Javascript中的对象是通过引用传递的。因此
orig
acct
将引用同一个对象。您需要使用创建该对象的副本

$scope.orig = calcThis(angular.copy(res.data));
$scope.orig.post_data
$scope.orig._1
$scope.orig._2
$scope.orig._3
$scope.orig = calcThis(angular.copy(res.data));