2016-02-02 2 views
1

Я ноб и копировал и редактировал скрипты d3.js для изучения. Я скопировал robschmuecker в блок (# 7880033 9 декабря 2013) D3.js Drag и Drop, Масштабируемые, панорамирование, Складная Дерево с автоматическим проклейки http://bl.ocks.org/robschmuecker/7880033Как сохранить отрегулированную визуализацию d3.js?

и хотел бы знать: а) как я могу сохранить Дерево после того, как я его перестроил? b) если после переустановки он может сохранить как другой файл (оригинал будет версией 1, переустановить будет версия 2) c) как сделать это также сохранить новый файл .json с повторно настроенными родительскими родителями ? (думаю, что все они могут быть одинаковыми.)

Любая помощь или совет подталкивают меня в правильном направлении. Спасибо ...

ответ

0

В коде есть корневая переменная. Он представляет собой фактическую древовидную структуру с дополнительными полями: «x», «x0», «y», «y0», «id» ... Чтобы избавиться от этих дополнительных полей, вы можете использовать эту функцию:

var delAdditionalFilds = function(obj) { 

    for (var prop in obj) { 
    if (obj.hasOwnProperty(prop)) { 
     if (prop === 'name' || prop === 'children' || prop === 'size') {} else { 
     delete obj[prop]; 
     } 
    } 
    } 
    if (obj.children) { 
    obj.children.forEach(function(v, i) { 
     delAdditionalFilds(v); 
    }); 
    } 

}; 

Чтобы избежать перезаписи исходного объекта, вы должны сделать глубокую копию корневой переменной. Для этого я использую библиотеку lodash.

Таким образом, функция сохранения будет 1) подготовить глубокую копию корневого объекта, а затем 2) избавиться от дополнительных полей

var save = function(root) { 
    var newJSON = _.copy(root); 
    delAdditionalFilds(newJSON); 
    // now you can send newJSON to your server 
}; 

После этой операции вы будете иметь JSON объект можно отправить на свой сервер с помощью AJAX звонок

Смежные вопросы