我想在顶部显示名称组并取消它上面的拖动事件。 如何禁用移动某个元素,如果该组名称在顶部。 我的代码是:
dragulaService.drag.subscribe((value) => {
console.log(`drag: ${value[0]}`);
});
我的模板:
<div class='wrapper'>
<div class='container' *ngFor='let group of groups' [dragula]='"nested-bag"'>
<div class="center-block">Table Number : {{group.name}}</div>
<div *ngFor='let item of group.items' [innerHtml]='item.name'></div>
</div>
</div>
答案 0 :(得分:12)
找到解决方案:
dragulaService.setOptions('nested-bag', {
revertOnSpill: true,
moves: function (el:any, container:any, handle:any):any {
debugger
console.log(el, container);
return false;
}
});
答案 1 :(得分:4)
禁用具有特定类的拖动元素:
dragulaService.setOptions('PUT_CONTAINER_NAME_HERE', {
moves: function (el: any, container: any, handle: any): any {
if (el.classList.contains('PUT_YOUR_CLASS_HERE')) {
return false;
}
return true;
}
});
答案 2 :(得分:2)
自Version 2(发布于2018-07-19)以来,您应该使用j
而不是j
:
dragulaService.createGroup()
答案 3 :(得分:0)
您需要添加两个功能(移动,接受)。移动将阻止您事件开始拖动元素。用同级null接受将阻止其他可拖动元素尝试更改未在模型中的位置的位置。
dragulaService.setOptions('PUT_CONTAINER_NAME_HERE', {
moves: function (el: any, container: any, handle: any): any {
if (el.classList.contains('PUT_YOUR_CLASS_HERE')) {
return false;
}
return true;
},
accepts: (el, target, source, sibling) => {
if (sibling === null) {
return false;
}
});
答案 4 :(得分:0)
这是另一种选择。您可以使用invalid
代替moves
。取自documentation:
您可以提供带有
invalid
签名的(el, handle)
方法。 对于不应触发以下操作的元素,此方法应返回true
拖动。handle
参数是被点击的元素,而el
是将被拖动的项目。这是默认值 实施,不会阻止任何拖累。function invalidTarget (el, handle) { return false; }
请注意,
invalid
将在以下位置的DOM元素上被调用: 单击,每个父级直到一个drake
的直系子级 容器。