2013-05-14 66 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