2015-03-26 1 views
3

У меня есть модель JointJs, которая включает в себя множество элементов и ссылок. Большинство ссылок, которые я хочу отображать в виде строк между элементами, но для определенных типов ссылок я хочу, чтобы они были невидимыми и неоткрытыми для пользователя. Я пробовал несколько разных вещей, которые меня закрыли, но мне было интересно, есть ли у кого-то лучшие или более полные решения.Скрыть ссылку в JointJs

Что я пробовал:

link.attr({'.connection': {opacity: 0.0}}); 

Это действительно делает ссылку невидимым для пользователя, но все еще показывает вверх и редактируется, когда пользователь в перемещении мыши над ним.

link.attr({'.connection': {display: non}}); 

Это даже не разместить ссылку на палитре, которая преуспеет в скрывая его от пользователя, но не является проблематичным, так как он больше не отслеживается с помощью модели.

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

Спасибо за любую помощь или идеи, которые вы можете предоставить.

ответ

1

Лучшее решение, которое у меня есть, скрывает все элементы ссылки (в doc они объясняют, какие из этих элементов).

Я сделал эту функцию, чтобы сделать это:

var attrObject = { 
    '.connection': {display:"none"}, //the link 
    '.marker-target': {display:"none"}, 
    'text': {display:"none"}, //because I have a label 
    'rect': {display:"none"}, //second element of label 
    '.connection-wrap': {display:"none"},//a bigger link highliting on hover 
    'g.marker-vertices': {display:"none"}, //vertice of the link 
    'g.link-tools': {display: 'none'}, // the button to delete the link 
    'g.marker-arrowheads': {display:"none"} //the arrow to change link targets 
}; 
link.attr(attrObject); 
+0

Спасибо за ответ, Даргор. Я не знал об этих других элементах, связанных с ссылкой, и поэтому они все еще были активны при наведении указателей мыши/мыши. Я закончил работу, как вы сказали, и установил непрозрачность: 0, pointerEvents: none и видимость: скрытые для этих объектов. Возможно, было бы проще добавить параметр baseCls в ссылку с этими тремя атрибутами, поскольку я считаю, что затем применил бы их ко всем дочерним элементам. – jayemar

2

Вы можете использовать

this.attr("./display", "none"); 

(смотри также Hiding elements in a diagram)

+0

Это решение - это правильный способ скрыть ссылку в объединении (или, вообще говоря, элемент jointjs), так как принятый ответ в предлагаемой ссылке был сделан создателем JointJs. –