Передача объекта с циклическими ссылками с сервера на клиентский Javascript при сохранении округлости
Я пытаюсь передать объект с круговыми ссылками из node.js-сервера на клиентский javascript.
Сервер (node.js):
var object = { circular: object }
//....
app.get('/', function(req, res){
res.render('index.jade', {object: object});
});
На стороне клиента Jade/Javascript
script var object = !{JSON.stringify(object)};
Здесь я получаю ошибку, что object
содержит круглые ссылки.
Любой способ получить object
на стороне клиента javascript, с
или без
круговые ссылки?
Ответы
Ответ 1
У Дугласа Крокфорда есть решение для этого, которое я успешно использовал для решения этой проблемы раньше: Cycle.js
вместо того, чтобы просто использовать stringify
и parse
, вы сначала вызываете decycle
и восстанавливаете с помощью retrocycle
var jsonString = JSON.stringify(JSON.decycle(parent));
var restoredObject = JSON.retrocycle(JSON.parse(jsonString));
JSFiddle