当使用双向绑定时,Angular会将expando属性,“哈希”等添加到我的深层对象结构中。这没关系,但我有兴趣检索我的对象树的JSON快照,只有原来属于那里的东西。 Angular是否提供了获取绑定对象的“vanilla”版本的方法?
(我不想仅仅在绑定之前存储“原始值”,因为我想反映通过UI进行的任何更改。)
答案 0 :(得分:6)
简短回答:
有一个很好的内置功能:
angular.toJson(yourObj);
更长的解释:
angular.toJson和JSON.stringify之间的唯一区别在于它通过过滤器运行它,该过滤器去掉哈希/ ids并将窗口,文档和范围转换为字符串。如果你想推出自己的函数来执行此操作:这里是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';
}
注意: isWindow
和isScope
函数未导出,因此您需要更多的黑客才能使该函数以完全相同的方式工作。< / p>
来源:http://docs.angularjs.org/api/angular.toJson和https://github.com/angular/angular.js/blob/master/src/Angular.js
还有一个angular.fromJSon
函数,基本上是JSON.parse
。
更新值得注意的是,当您为$ http请求指定模型为data
时,$ http服务会自动为您执行此操作。