angular JS中 ‘=’與angular.copy的區別


先來看代碼:

<b>{{test1}}</b>
<input type="text" ng-model="test2" title="test" />
$scope.list = 'band';
$scope.editModi = function(idx){ $scope.editItem = $scope.list; };

這個時候我們在視圖中修改editItem的值時,list的值不變。

<b>{{test1.name}}</b>
<input type="text" ng-model="test2.name" title="test" />
$scope.test1 = {
        "id":1,
        "name":"band"
    };
    $scope.test2 = $scope.test1;

此時在視圖中改變test2.name的值時,tes1.name的值也相應的改變了。

<b>{{test1[1]}}</b>
<input type="text" ng-model="test2[1]" title="test" />
$scope.test1 = ['11','22','33'];
$scope.test2 = $scope.test1;

此時在視圖中改變test2[1]的值時,tes1[1]的值也相應的改變了。

解釋:當$scope.tes1是基本類型時,$scope.test2 = $scope.test1;賦的是值,因此不會發生改變其中一個的值另一個也發生改變的情況。

當$scope.test1是對象或數組時,$scope.test2 = $scope.test1;此時$scope.test1和$scope.test2共同指向了內存中的某一處,因此當改變其中一個值的時候,另一個值也會跟着改變。

解決方法:angular.copy($scope.test1,$scope.test2);angular.copy做了一份數據的拷貝,此時$scope.test1和$scope.test2指向了不同的地址,只是兩個地址存儲的值是相同的。這個時候再改變其中一個的值就不會影響另一個了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM