2013-05-14 41 views
5

當使用雙向綁定時,Angular將expando屬性,「哈希」等添加到我的深層對象結構中。這很好,但我有興趣只用原來屬於那裏的東西來檢索對象樹的JSON快照。 Angular是否提供了獲取綁定對象的「vanilla」版本的方法?「Un Angularize」JS對象的快速方法

(我不希望在結合前踢僅僅存放「原始值」,因爲我想,以反映通過用戶界面所做的任何更改)

+0

您可以添加小提琴演示來展示物體如何變髒嗎? – Stewie 2013-05-14 16:20:53

回答

6

簡短的回答:

有內置的功能一個不錯:

angular.toJson(yourObj);

更詳細的解釋:

angular.toJson和JSON.stringify之間的唯一區別是它通過一個過濾器來運行它,該過濾器會去除散列/ id並將窗口,文檔和範圍轉換爲字符串。如果你想推出自己的函數來做到這一點:這裏是來自Angular.JS源代碼相關的片斷:

if(/^\$+/.test(key)) { 
    val = undefined; 
} else if (isWindow(value)) { 
    val = '$WINDOW'; 
} else if (value && document === value) { 
    val = '$DOCUMENT'; 
} else if (isScope(value)) { 
    val = '$SCOPE'; 
} 

注:isWindowisScope功能都沒有出口,所以你需要一點點更多的黑客讓該功能以完全相同的方式工作。

來源:http://docs.angularjs.org/api/angular.toJsonhttps://github.com/angular/angular.js/blob/master/src/Angular.js

還有一個angular.fromJSon功能基本上是JSON.parse

更新值得注意的是,當您爲$ http請求指定模型爲data時,$ http服務會自動爲您執行此操作。

+1

這就是我需要的 - 非常感謝你! – blaster 2013-05-14 16:49:18