документация 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 для каждой ссылки.
* «Я использую firebug, но я не могу войти в эту функцию». * Вы должны уметь. * «Я пытался включить оповещение внутри функции, но это не сработало». * Это указывает на проблему вне кода, который вы цитировали, или что 'linkDistance' не поддерживает обратный вызов (и поэтому никогда не вызывает функцию вы передаете его). –
Просто, чтобы быть ясным: '.linkDistance (function (3) {return d;})' передает функцию в 'linkDistance'. Эта функция не называется ** **, если 'linkDistance' не вызывает ее через аргумент, который он получает. Это действительно то, что вы хотите сделать? –
Вы можете использовать оператор '' debugger' '(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/debugger) в функции 'linkDistance' для приостановки выполнения там, если это выполненных вообще. Это может помочь вам больше, чем «предупреждение». –