我在js和angularjs中相当新,遇到了一些我无法解决的基本问题。 我使用ng-repeat将$ scope.consignations添加到视图中。它是一个有几层的大对象。在示例代码中,我将$ scope.consignations分配给temp,之后,我"导航"在temp对象内部,在某些时候我将数据推送到temp。它正如预期的那样更改视图。现在我想要清除$ scope [elementName] obj,但它也会从视图中清除推送的数据。我试图删除临时引用(我假设它只是$ scope.consignations obj的引用。)并且我不能再访问它了,但是当我清除$ scope [elementName]时它无论如何都会清除视图。
$scope.addElements = function(elementName){
temp=$scope.consignations;
for (var key in someArray) {
//here i "navigate" recursive inside temp
}
temp.push($scope[elementName]);
delete temp;
for (var key in $scope[elementName]) {
$scope[elementName][key]="";
}
};
答案 0 :(得分:1)
temp=$scope.consignations
这样做是temp
& $scope.consignations
引用相同的对象。
因此,任何对象的更改都将反映在其他对象中以及视图中。
因此,您应该像$scope.temp=angular.copy($scope.consignations)
一样复制它,然后使用$scope.temp
进行视图绑定,将$ scope.consignations
用于其他用途。
答案 1 :(得分:0)
如果要将现有元素从$ scope复制到新的$ scope变量并删除旧的变量,则可以使用以下approch。
$scope.consignations.push(angular.copy($scope[elementName]));
delete $scope[elementName];
假设$ scope.consignations是您要存储数据的新数组,$ scope [elementName]是您要删除的旧数组。
答案 2 :(得分:0)
如果您使用的是definedProperty,则angular不会复制这些 This snippet会帮助你。