在javascript

时间:2015-11-10 04:23:19

标签: javascript angularjs

我在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]="";
    }
};

3 个答案:

答案 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会帮助你。