2017-05-29 19 views
1

2つの変数があります。しかし、1を更新するともう一方が更新されます。誰でもここで何が起こっているのか説明できますか?

$scope.pages = []; 
$scope.pagesSave = []; 

var functionName = function(){ 

    $service.doThing1().then(function(res1){ 
    $scope.pagesSave = res1; 
    console.log(res1) 
    $service.doThing2().then(function(res2){ 
     $scope.pages = $service.formatThings(res2, res1); 
     console.log($scope.pages) 

    }, function(err){}); 
}, function(err){}); 

$ scope.pagesが

$ scope.pagesSaveが

事前にフォーマットされたデータである必要があり、最終的な製品であるべきであるが、これらの変数をロギングコンソールが同一であるとそれらを表示。

もっと奇妙なことに、$ service.doThing1()を実行した直後のコンソールログでは、正しい長さを持っているのに「res1」と表示されますが、$ scope.pagesのデータのみがこの画像に表示されます。

2は、フォーマット機能はまだここに起こっていただきました!誰もが知っている

enter image description here

が起きていないにもかかわらず、不足していますか?

ことが

+0

あまりにも多くの不明な点は.... **実行可能** [mcve] – charlietfl

答えて

1

は私が考えることができます場合、私は、コンソールログのChromeを使用していますその中にあなたformatThingsあなたは$scope.pagesSave$scope.pagesと同じになりますres1を等しくすることを意味し、あなたの関数の結果としてres1を送信します。

解決策はangular.copy()を使用してres1のディープコピーを作成し、作成したオブジェクトを使用してそれをクリーンアップすることです。 formatThingsを共有できますか?

+0

ありがとうございます!これを試して、angular.copy()のdocs/examplesを見てみましょう。これは私が必要なものです! –

+0

ようこそ。答えとしてマークすることを検討してください;) –

関連する問題