覆盖angularjs中的JSON.stringify

时间:2016-07-06 17:51:00

标签: angularjs

我有一个返回对象树结构的函数。但是这个树结构包含一个循环引用。 (注意:我的数据模型需要这种循环,所以我无法改变它)。我将这个对象附加到这样的范围:

$scope.tree = myService.getTree(); //This return the circular structure

然后我试着在我的html文件中显示这个:

{{tree}}

但是当我尝试这样做时,它给了我这个错误:

TypeError: Converting circular structure to JSON

我知道当我在html文件中调用{{tree}}时,angularjs正在为我调用JSON.stringify(tree)。我的问题是,如何在angular中覆盖JSON.stringify上的行为。例如,如果在对象树中检测到圆形并返回它到目前为止生成的json字符串(而不是抛出错误),我可以告诉angular或JSON.stringify停止序列化对象树。

或者,我可以覆盖行为,不为整个对象调用JSON.stringify,而是在访问对象树时为对象树中的各个对象调用JSON.stringify或JSON.toString。 例如,如果我打电话:

{{tree.person.name}}

然后angular将仅在树对象和person对象上调用stringify。

1 个答案:

答案 0 :(得分:0)

尝试

$scope.tree = JSON.parse(myService.getTree())