2013-05-09 13 views
5

参照するときangular.copyがブラウザをクラッシュ:角度JS:オブジェクトは、私は次のJavaScript /アンギュラコード持っている別のオブジェクト

var a = {}; 
var b = {}; 
a.ref = b; 
b.ref = a; 
angular.copy(a); 

angular.copy火災を、ブラウザがロックアップします。私はこれがコピー関数が深いコピーをしていると仮定しているので、bの参照をコピーし始めると、bに入り、その参照をコピーして循環コピーを作成したい終わり。

この仮説は正しいですか?もしそうなら、これを避ける方法はありますか?私は答えが私のデータの見方を変えることを含むと仮定していますが、私は別の人の考えを聞くのが好奇妙です。

答えて

2

あなたの前提は正しいです、問題は循環参照です。 JSON.stringifyもこの構造について不平を言うでしょう。 jQuery.extendは非常に基本的なレベルで循環参照を検出し、ここでは基本的な例を扱うことができますが、jQuery.extend has its own issues as wellです。あなたは既にjQueryのを使用している場合は、あなただけの拡張を使用することができますが、そうでなければ、自分で何かを書くことを見てみたいことがあり、またはあなたは、私がグーグル経由で見つかったこの空想cloneObject機能を使用することができます

https://gist.github.com/NV/1396086

+0

興味深い。私の前提をクリアしてくれてありがとう。私のデータの構造のような音はちょうど変更する必要があります... – incutonez

+0

あなたはそれをどのように修正しましたか?循環参照で作業できるようにしましたか? – testing123

+0

データモデルを修正して修正しました。子ノードに実際の親オブジェクトを与える代わりに、子ノードと親ノードIDを各子に追加しました。したがって、孫を作成するときは、親のIDを渡すのは簡単です。 – incutonez

関連する問題