視圖模型有一個循環引用,通過設計,使得使用<pre data-bind="text: ko.toJSON($data)"></pre>
調試扔循環引用:knockoutjs - 調試與視圖模型
Unable to parse bindings.
Message: TypeError: Converting circular structure to JSON;
Bindings value: text: ko.toJSON($data)
是否有辦法來解決此問題?
視圖模型有一個循環引用,通過設計,使得使用<pre data-bind="text: ko.toJSON($data)"></pre>
調試扔循環引用:knockoutjs - 調試與視圖模型
Unable to parse bindings.
Message: TypeError: Converting circular structure to JSON;
Bindings value: text: ko.toJSON($data)
是否有辦法來解決此問題?
如果您打算添加對Dojo的引用(可能僅用於調試),那麼dojox.json.ref.toJson似乎能夠使用循環引用序列化JSON對象。
在這種情況下,你可以這樣做:
<pre data-bind="text: dojox.json.ref.toJson($data)"></pre>
也有這個庫值得一檢查或許可以提供比道場更輕量級的解決方案:http://mixu.net/snapshot/
這是最終調用JSON.stringify
內ko.toJSON
導致你的錯誤。
您可以控制JSON輸出的一種方法是在對象上提供toJSON
函數,如下所述:http://www.knockmeout.net/2011/04/controlling-how-object-is-converted-to.html。這樣你就可以在適當的地方去掉循環引用。
還有一些其他技術可以用於此目的。
您可以將第二個參數傳遞給ko.toJSON
。這是JSON.stringify
的replacer
選項,如下所述:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify。
例如,您可以通過屬性數組,包括像:
ko.toJSON(myobject, ["one", "two", "three"])
你可以附上你不想得到變成JSON作爲一個「子」 -observable屬性像:
this.data = ko.observable();
this.data.parent = parent;
在這種情況下,data
將得到變成JSON
,但parent
只會消失,因爲它是一個O屬性bservable已經解開了它的價值。