Я начинаю свое Угловое контроллер при загрузке данных в формате JSON с помощью Promises и хранить его в переменных:AngularJS - это переменные перекрестные связи?
app.controller('mainController', ['$scope', '$http', '$q', function($scope, $http, $q) {
var req1 = $http({method: 'GET', url: 'link to JSON 1', cache: 'true'});
var req2 = $http({method: 'GET', url: 'link to JSON 2', cache: 'true'});
$q.all([req1, req2]).then(function(response){
var res1 = response[0].data;
var res2 = response[1].data;
$scope.data1 = res1; // JSON which I will manipulate
$scope.data1Ref = res1; // JSON for reference which I won't manipulate
$scope.data2 = res2;
$scope.data2Ref = res2;
init(); // do the stuff with the data
});
}]);
После init()
делается, однако, если я проверю $scope.data1
и $scope.data1Ref
оба они были изменены, то есть они обязаны вместе.
Почему это происходит и как я могу хранить сохраненную версию оригинального загруженного JSON для справки?
Это потому, что $ scope.data1 и $ scope.data1Ref ссылка res1, поэтому любые изменения res1 будут отражены в этих двух. Перед назначением вам нужно сделать копию res1. –
http://stackoverflow.com/questions/29749433/difference-between-angular-copy-and-assignment – dhemz