2013-05-09 19 views
5

我有以下的JavaScript /角碼angular.copy崩潰的瀏覽器。我假設這是因爲複製功能正在做一個深層複製,當它開始複製b的引用時,它會進入b,然後想要複製它的a引用,從而創建一個永遠不會複製的循環副本結束。角JS:</p> <pre><code>var a = {}; var b = {}; a.ref = b; b.ref = a; angular.copy(a); </code></pre> <p>當<code>angular.copy</code>火災,瀏覽器鎖定了:當一個對象引用了另一個對象

這個假設是正確的嗎?如果是這樣,是否有辦法避免這種情況?我假設答案將涉及改變我的數據看起來的方式,但我很好奇聽到別人的想法。

回答

2

你的假設是對的,問題是循環引用。 JSON.stringify也會抱怨這種結構。 jQuery.extend在非常基本的層次上檢測循環引用,並且可以在這裏處理您的基本示例,但是jQuery.extend has its own issues as well。如果您已經使用jQuery,你可以使用延長,但否則,你可能想看看自己寫的東西,或者你可以使用這個奇特cloneObject功能我通過谷歌發現:

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

+0

有趣。感謝您澄清我的假設。聽起來像我的數據結構應該只是改變... – incutonez 2013-05-09 15:46:11

+0

這是你如何解決它?你是否能夠使用循環引用來處理它? – testing123 2013-06-27 05:35:22

+0

我們通過修改我們的數據模型來修復它。我們沒有給子節點實際的父對象,而是爲每個子節點添加了一個子節點和父節點ID ......所以當我們去創建孫子時,很容易傳遞父母的ID。 – incutonez 2013-06-27 11:31:20

相關問題