2013-08-20 6 views
2

Я пытаюсь установить несколько программных соединений. Проблема в том, что при создании соединения создаются новые конечные точки, а существующие конечные точки больше не доступны для просмотра. У меня есть конечные точки с перетаскиваемым поведением. Я не могу заставить конечные точки (созданные соединением) иметь те же свойства, что и оригинальные.jsplumb connect не работает

Я сделал рабочий jsFiddle: http://jsfiddle.net/SCSaf/4/

Ниже в коде контейнеры инициализируются и соединение обращается

jsPlumb.connect({source: "container1", target: "container2"}, common); 

В общем вар я попытался совместить свойства источника -endpoints (exampleGreyEndpointOptions) с конечными точками (endpointOptions) В общем, у меня есть paintStyle, чтобы сделать строку/arraw такой же, как у перетаскиваемых. Анкеры определены для предотвращения соединений между контейнерами или квадратными соединениями. Как вы можете видеть, это будет использоваться в очень иерархической datamodel.

Я попытался установить новое поведение конечных точек, добавив больше вариантов конечных точек (раскомментировать для тестирования), но это дает somekind ошибки слияния в jsPlumb

var common = { 
anchors: ["BottomCenter", "TopCenter"], 
//endpoints: [{ 
// isSource: true, 
// isTarget: false, 
//}, { 
// isSource: false, 
// isTarget: true, 
//}], 
endpointStyles: [exampleGreyEndpointOptions, endpointOptions], 
paintStyle: {strokeStyle: color} 
}; 

Я из идей и не имею понятия, как к разрешить ошибку. Поведение я хочу, что это также можно сделать/перетащить новые соединения (или удалить существующие) из конечных точек с соединениями начертить программно

API Ссылку: http://jsplumbtoolkit.com/apidocs/Connection.html

Документы http://jsplumbtoolkit.com/doc/connections#programmatic

ответ

1

Для того, чтобы сохранить параметры вашей конечной точки, необходимые для подключения контейнеров по их конечным точкам, а не их идентификатора. Я дал конечные точки uuid на основе их контейнера и связал их. например, контейнер 0 имеет конечные точки uuid container0sr (source) и container0tr (target).

Я изменил ваши jsFiddle

Модификации:

$('.stepnode').each(function(){ 
    InitContainer($(this)); 
}); 

Предоставление UUID для конечной точки каждого контейнера:

uuid:el.attr("id")+"sr" //for source endpoint options 
uuid:el.attr("id")+"tr" //for target endpoint options 
jsPlumb.connect({uuids:["container1sr","container2tr"]}); //for connecting based on endpoint uuid 
Смежные вопросы