我有控制器:
$http.post("./post", { get: id })
.then(function(res) {
$scope.acct = res.data;
$scope.orig = calcThis(res.data);
});
说明:在$ http.post之后,我期待以下内容:
$scope.acct.post_data
和
$scope.orig.post_data
$scope.orig._1
$scope.orig._2
$scope.orig._3
....其中子元素_1,_2,_3被赋值为calcThis()函数的结果。
然而,我改为:
$scope.acct.post_data
$scope.acct._1
$scope.acct._2
$scope.acct._3
和
$scope.orig.post_data
$scope.orig._1
$scope.orig._2
$scope.orig._3
此处的Plunker:https://plnkr.co/edit/InQkQXDkmhBftkD59CuB?p=preview
解释&问题:虽然$ scope.acct和$ scope.orig使用相同的post-ed数据,但它们在DOM上有不同的用途。
谢谢。我很感激你的答案!
答案 0 :(得分:0)
在Javascript中,对象通过引用传递。所以orig
和acct
将引用相同的对象。您需要使用angular.copy制作该对象的副本。
$scope.orig = calcThis(angular.copy(res.data));