Добавить атрибут перетаскивания при нажатии кнопки

Я сейчас работаю с Angular (4.0) и ng2-dragula. Я взбесил div контейнер для перетаскивания, чтобы перемещать элементы в нем следующим образом:

<div id="dragcontainer" [dragula]='"first-bag"'>

Теперь я хотел бы реализовать функцию, чтобы мой div превращался в перетаскиваемый div с перетаскиванием при нажатии кнопки. Например:

Перед нажатием кнопки:

<div id="dragcontainer">

После нажатия кнопки:

<div id="dragcontainer" [dragula]='"first-bag"'>

Я пробовал это:

HTML-кнопка:

<button md-raised-button style="margin-left: 20px;" (click)="dragable()">
    Make it drawable
</button>

Код Типа:

dragable(): void {
    document.getElementById("dragcontainer").setAttribute("[dragula]", "first-bag");
}

но это не работает. Чтобы убедиться, что я правильно использовал команду .setAttribute, я попробовал следующее:

dragable(): void {
    document.getElementById("dragcontainer").setAttribute("align", "center");
}

и это сработало.

Кто-нибудь пробовал это раньше или кто-нибудь знает, как это решить?


person Leonzen    schedule 29.05.2017    source источник


Ответы (1)


Возможно, вам нужен какой-то логический флаг в контроллере, который запускается после нажатия кнопки, вы должны прослушивать drakeService.on('drag', listener), и если флаг установлен на false (изначально), вы немедленно запускаете метод .cancel(true).

Я думаю, было бы намного проще, если бы вы могли предоставить какую-нибудь онлайн-демонстрацию (например, plunkr).

person Maciej Kwas    schedule 03.08.2017