视图模型具有循环引用,通过设计,使用<pre data-bind="text: ko.toJSON($data)"></pre>于调试抛出:
Unable to parse bindings.
Message: TypeError: Converting circular structure to JSON;
Bindings value: text: ko.toJSON($data)
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?
最终对JSON.stringify内部的调用ko.toJSON会导致您的错误.
一种可以控制JSON输出的方法是toJSON在对象上提供一个函数,如下所述:http://www.knockmeout.net/2011/04/controlling-how-object-is-converted-to.html.这样,您可以在适当的位置删除循环引用.
您也可以使用其他一些技术.
你可以传递第二个参数ko.toJSON.这是如下所述的replacer选项JSON.stringify:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify.
例如,您可以传递一组属性,包括:
ko.toJSON(myobject, ["one", "two", "three"])
Run Code Online (Sandbox Code Playgroud)您可以将不希望变为JSON的属性作为"sub"-observable附加,如:
this.data = ko.observable();
this.data.parent = parent;
Run Code Online (Sandbox Code Playgroud)在这种情况下,data将变为JSON,但parent将消失,因为它是已经被解包到其值中的可观察对象的属性.