我对$ scope值有疑问。
示例:
$scope.editItem = $scope.data.item;
因此,在$scope.editItem
中,我的值与$scope.data.item
相同。
但如果我修改$scope.editItem
中的值,则$scope.data.item
中的值也会发生变化。
我在网格中创建了一个版本表单,并且我想在不更改原始值的情况下编辑项目。
因此,如果用户开始编辑该行,然后取消,那么我需要取回$scope.editITem
对象中的原始数据。
答案 0 :(得分:3)
这是因为您要为$scope.data.item
分配引用,而不是复制该值。
为了达到你想要的效果,你需要使用
深度复制你的对象 $scope.editItem = angular.copy($scope.data.item)
答案 1 :(得分:2)
只要我理解你只想将一个变量的值复制到另一个变量而不是引用。我知道要实现的一种虚拟方法是使用angular.copy
(doc)以便您可以获得此
$scope.editItem = angular.copy($scope.data.item)
答案 2 :(得分:1)
它正在发生,因为您正在分配对$scope.data.item
的引用。因此,两个范围变量的引用/地址相同,只要您更新$scope.editItem
,它就会更新。 (双向约束概念)
因此,您所要做的就是将$scope.data.item
的副本分配给$scope.editItem
。那么你的问题就得到了解决。
执行以下操作:
$scope.editItem = angular.copy($scope.data.item)
有关详情,请阅读https://docs.angularjs.org/api/ng/function/angular.copy