了解AngularJS

时间:2017-08-31 10:32:39

标签: angularjs

我对$ scope值有疑问。

示例:

$scope.editItem = $scope.data.item;

因此,在$scope.editItem中,我的值与$scope.data.item相同。

但如果我修改$scope.editItem中的值,则$scope.data.item中的值也会发生变化。

我在网格中创建了一个版本表单,并且我想在不更改原始值的情况下编辑项目。

因此,如果用户开始编辑该行,然后取消,那么我需要取回$scope.editITem对象中的原始数据。

3 个答案:

答案 0 :(得分:3)

这是因为您要为$scope.data.item分配引用,而不是复制该值。

为了达到你想要的效果,你需要使用

深度复制你的对象

$scope.editItem = angular.copy($scope.data.item)

答案 1 :(得分:2)

只要我理解你只想将一个变量的值复制到另一个变量而不是引用。我知道要实现的一种虚拟方法是使用angular.copydoc)以便您可以获得此

$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