当使用双向绑定时,Angular将expando属性,“哈希”等添加到我的深层对象结构中。这很好,但我有兴趣只用原来属于那里的东西来检索对象树的JSON快照。 Angular是否提供了获取绑定对象的“vanilla”版本的方法?“Un Angularize”JS对象的快速方法
(我不希望在结合前踢仅仅存放“原始值”,因为我想,以反映通过用户界面所做的任何更改)
当使用双向绑定时,Angular将expando属性,“哈希”等添加到我的深层对象结构中。这很好,但我有兴趣只用原来属于那里的东西来检索对象树的JSON快照。 Angular是否提供了获取绑定对象的“vanilla”版本的方法?“Un Angularize”JS对象的快速方法
(我不希望在结合前踢仅仅存放“原始值”,因为我想,以反映通过用户界面所做的任何更改)
简短的回答:
有内置的功能一个不错:
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';
}
注:的isWindow
和isScope
功能都没有出口,所以你需要一点点更多的黑客让该功能以完全相同的方式工作。
来源: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服务会自动为您执行此操作。
这就是我需要的 - 非常感谢你! – blaster 2013-05-14 16:49:18
您可以添加小提琴演示来展示物体如何变脏吗? – Stewie 2013-05-14 16:20:53