2017-04-17 48 views
0

我有以下代碼

var myapp = angular.module('myapp', []); 
myapp.controller('FirstCtrl', function ($scope) { 
$scope.people = [ 
    { id: 1, first: 'John', last: 'Rambo' }, 
    { id: 2, first: 'Rocky', last: 'Balboa' }, 
    { id: 3, first: 'John', last: 'Kimble' }, 
    { id: 4, first: 'Ben', last: 'Richards' } 
]; 
$scope.updateByReference = function() { 
    var tst = $scope.people; 
    tst = []; 
    console.log($scope.people); 
} 
}); 

我期望$ scope.people有一個新的價值和空數組對象,但它沒有被更新更新,這裏是小提琴 http://jsfiddle.net/9fR23/409/

回答

1

您的$scope.people是一個對象。當您執行var tst = $scope.people;時,它會將參考複製到tst中。在您執行tst = []後,它會將tst的值(參考改爲$scope.people,而不是$scope.people的值)。所以實際上,當你改變整個變量的值時,你只能讓他引用另一個對象。

只是做

$scope.people = [];

+0

那麼,怎樣才能達到我所期望的行爲? – Petran

+0

@Petran更新 –

0
var tst = $scope.people; //tst reference is $scope.people. 

因此尖沙咀或$ scope.people所做的任何更改將反映到兩個變量。

SOLUTION:

$scope.updateByReference = function() { 
     var tst = JSON.parse(JSON.stringify($scope.people)); 
     tst = []; 
     console.log($scope.people); 
    }