5

当使用双向绑定时,Angular 将扩展属性、“哈希”等添加到我的深层对象结构中。这很好,但我有兴趣检索我的对象树的 JSON 快照,其中只包含最初属于那里的东西。Angular 是否提供了一种获取绑定对象的“香草”版本的方法?

(我不想在绑定开始之前只存储“原始值”,因为我想反映通过 UI 所做的任何更改。)

4

1 回答 1

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';
}

注意:isWindow and函数不会被isScope导出,所以你需要更多的修改才能让该函数以完全相同的方式工作。

来源:http ://docs.angularjs.org/api/angular.toJson和https://github.com/angular/angular.js/blob/master/src/Angular.js

还有一个angular.fromJSon功能本质上是JSON.parse.

更新值得注意的是,当您data为 $http 请求指定模型时,$http 服务会自动为您执行此操作。

于 2013-05-14T16:22:03.087 回答