Я знаю, что это не идеально, но я использую jQuery UI Draggable, Droppable и Resizable в моей сборке AngularJS.
Мой Draggable использует опцию clone helper, поэтому мне нужно дублировать draggable, как только я опустил его в элемент Droppable.
Для этого я использую следующий код.
$formContainer.droppable({
'drop' : function (event, ui) {
var clone = ui.helper.clone();
clone.draggable({ /* ... */ });
clone.resizable({ /* ... */ });
clone.appendTo('#form-container');
}
});
Это отлично работает, пока мне не понадобится ng-click внутри Draggable.
Вопрос: Каков режим элегантный способ использования компиляции $ со значением var clone
так что ng-click и т.д. Все еще работает, как только я добавил новый элемент?
Я заставляю вручную передавать строку HTML в $compile
затем вручную обновлять встроенные атрибуты стилей/данных/классов, добавленные к исходному элементу из плагина Draggable?
@Jugnu: Спасибо, что нашли время, чтобы посмотреть на мой вопрос. Я смог решить проблему с тем, что, по моему мнению, является скорее "угловым" подходом (с использованием привязки данных и директив), а не подходом "jQuery" (вручную добавление элементов в DOM с помощью .append()
).
Вот скрипка, с которой все работает: http://jsfiddle.net/1knfywzr/
Когда я отбрасываю draggable, я извлекаю необходимые данные и сохраняю их в массиве. Затем я использую ng-repeat
для цикла по массиву и прикрепления директив к документу. Затем директивы используют ранее извлеченные данные для размещения/размера нового перетаскиваемого.
Я очень доволен этим подходом, поскольку он кажется немного более организованным, чем моя оригинальная идея, но я счастлив, что другие могут поделиться своими мыслями.