2013-03-04 2 views
2

Я хотел бы проверить значение «D» аргумент в функции из этого фрагмента кода:проверка значения аргумента функции d3

var force = force = d3.layout.force() 
    .nodes(json.nodes) 
    .links(json.links) 
    .linkDistance(function (d){return d;}) //I need to know the "d" value to decide what return 
    .size([width, height]) 
    .start(); 

Я использую поджигатель, но я не могу войти в эта функция. Я попытался включить предупреждение в функцию, но это не сработало.

+0

* «Я использую firebug, но я не могу войти в эту функцию». * Вы должны уметь. * «Я пытался включить оповещение внутри функции, но это не сработало». * Это указывает на проблему вне кода, который вы цитировали, или что 'linkDistance' не поддерживает обратный вызов (и поэтому никогда не вызывает функцию вы передаете его). –

+0

Просто, чтобы быть ясным: '.linkDistance (function (3) {return d;})' передает функцию в 'linkDistance'. Эта функция не называется ** **, если 'linkDistance' не вызывает ее через аргумент, который он получает. Это действительно то, что вы хотите сделать? –

+0

Вы можете использовать оператор '' debugger' '(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/debugger) в функции 'linkDistance' для приостановки выполнения там, если это выполненных вообще. Это может помочь вам больше, чем «предупреждение». –

ответ

1

документация d3 дает вам то, что аргумент:

force.linkDistance ([расстояние])

Если задано расстояние, устанавливает заданное расстояние между связанными узлами к указанному значению. Если расстояние не указано, возвращает текущее расстояние связи макета, которое по умолчанию равно 20. Если расстояние постоянное, все ссылки имеют одинаковое расстояние. В противном случае, если расстояние является функцией, то функция оценивается для каждой ссылки (по порядку), передается ссылка и ее индекс, причем этот контекст является макетом силы; после этого возвращается значение функции для установки расстояния каждой линии. Функция оценивается всякий раз, когда начинается макет. Как правило, расстояние указывается в пикселях; однако, единицы произвольны относительно размера макета.

>

так, если аргумент является функцией, первый аргумент является ссылкой, а второй аргумент является индексом ссылке. Не следует забывать связывать данные с компоновкой силы перед применением функции.

У меня пример здесь:

force 
    .nodes(json.nodes) 
    .links(json.links); 

    force.linkStrength(function(d,i) {return (json.links[i].isMyLeaf ? .01: 1);}); 

в моем файле JSon я определяю isMyLeaf для каждой ссылки.