2015-11-10 71 views
0

我在js和angularjs中很新,遇到了一些我無法解決的基本問題。 我使用ng-repeat將$ scope.consignations添加到視圖中。它是一個有幾層的大對象。在示例代碼中,我將$ scope.consignations賦值給temp,之後,我在temp對象內部「導航」,並在某些時候將數據推送到temp。它按預期改變視圖。現在我想清除$ scope [elementName] obj,但它也從視圖中清除了推送的數據。我試圖刪除臨時引用(我認爲它只是$ scope.consignations obj的引用),並且我不能再訪問它,但是當我清除$ scope [elementName]時,它將清除視圖。在javascript中刪除對象引用

$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

你覺得'delete temp'在做什麼?刪除操作符只用於刪除屬性,而不是對象。 –

+0

我想用temp更新$ scope.consignations,但在完成之後,我想在$ scope.consignations或視圖中沒有任何其他更改的情況下清空$ scope [elementName]。 – user3130985

回答

0

temp=$scope.consignations這樣做你的temp & $scope.consignations引用相同的對象。 因此,任何對象的更改都會反映在其他對象以及視圖中。

因此,您應該像$scope.temp=angular.copy($scope.consignations)那樣複製它,然後使用$scope.temp進行視圖綁定,將$ scope.consignations用於其他目的。

0

如果您想從$ scope複製現有的元素到新的$ scope變量並刪除舊的那個,那麼您可以使用以下方法。

$scope.consignations.push(angular.copy($scope[elementName])); 
delete $scope[elementName]; 

假設$ scope.consignations是你新的數組要存儲數據和$範圍[的ElementName]是您要刪除舊的。