Dragula: отменить падение в ng2-dragula
У меня есть angular2
приложение с typescript
, Я использую ng2-dragula, чтобы создать приложение для перетаскивания.
Мне необходимо проверить условие и отменить перетаскивание, если условие ложно, и я знаю, что здесьrevertOnSpill
тот revertOnSpill:true
может вернуть элемент на первое место.
Но я не знаю, как это возможно в ng2-dragula
, я сделал это в onDrop
, вот код
constructor() {
dragulaService.drop.subscribe((value) => {
this.onDrop(value.slice(1));
});
dragulaService.setOptions('second-bag', {
removeOnSpill: true
});
}
private onDrop(args) {
bla
bla
bla
if(err.status=="404")
this.dragulaService.removeModel;
// this.dragulaService.cancel; also tried but did not work
}
и вот HTML-код:
<div id="toPlay" class="playBox roundedBox" [dragula]="'second-bag'">
<img class="w3-animate-top" [src]="sax_path" alt="sax" id="saxsophone"/>
<img class="w3-animate-top" [src]="drum_path" alt="drum" id="drum"/>
</div>
<div id="scene" [dragula]="'second-bag'">
</div>
Package.json - это:
"dependencies": {
"dragula": "^3.7.2"
},
"peerDependencies": {
"@angular/common": "^2.0.0",
"@angular/core": "^2.0.0",
"@angular/compiler": "^2.0.0",
"@angular/forms": "^2.0.0"
},
"devDependencies": {
"angular-cli": "1.0.0-beta.22-1",
"typescript": "2.0.10"
}
проблема в том, что я не знаю, как отменить падение?
2 ответа
Существует свойство, называемое булевыми движениями, которое контролирует, если элемент является подвижным или нет
this.dragulaService.setOptions('second-bag', {
moves: (el, container, handle) =>{
if(YourCondition)
//return true;
else
//return false;
}))
Я знаю, что это довольно старый пост, но все же, если кто-то его ищет. Если вы хотите использовать собственные события Dragula, чтобы отменить удаление. Следующий фрагмент кода может помочь вам асинхронно вернуть последнюю каплю в предыдущее местоположение. Здесь, когда начинается перетаскивание, мы сохраняем сведения о родителе и родительском одноуровневом элементе в глобальной переменной. А затем использовать эти данные при удалении, чтобы асинхронно вернуть их.