【发布时间】:2017-04-19 20:38:57
【问题描述】:
Plunker:https://plnkr.co/edit/uZ8mvu6a1LXAsBBY3Shd?p=preview
在顶部我有“小部件”:“文本 a”和“文本 b”,您可以拖放它们。
在小部件下方,您有两行已经在里面的小部件。 我有一个
- 块容器
- 块行(蓝色背景)
- 块列(粉红色背景)
- 方块(红色背景)
- 块列(粉红色背景)
- 块行(蓝色背景)
基本上就像一个 Bootstrap 网格。
1) 当我将“text a”小部件拖到红色块上时,小部件被添加,但我没有调用回调 'onDragEnter' 函数。我只在 console.log onDropSuccess 中得到。
当我将小部件拖到容器、行、列和块上时,我想得到一个回调,以便我可以添加逻辑。
我尝试添加我的函数,但不起作用并且无法找出错误所在。
我希望有人能帮助解决这个问题。
//Drag functions
drop(item){
alert('dropped')
console.log('dropping event', item)
var target = item.mouseEvent.target,
index;
if(target.classList.contains('row')) {
index = target.getAttribute('data-index');
}
if(target.classList.contains('item') && target.parentNode.classList.contains('row')) {
index = target.parentNode.getAttribute('data-index');
}
if(index) {
console.log(this.containers);
console.log(this.containers[index]);
this.containers[index].widgets.push( item.dragData);
} else {
this.containers.push([ item.dragData]);
}
}
onDropSuccess(widget: any, event: any, objecType: string) {
console.log('dropped on ', objecType)
if( objecType == 'row'){
console.log('dropped on', objecType)
}
else if(objecType == 'block'){
console.log('dropped on ', objecType)
}
this.dragOperation = false;
console.log('onDropSuccess x', widget, event);
console.log('containers', this.containers)
}
onDragStart(widget: any, event: any) {
console.log('onDragStart', widget, event);
}
onDragEnter(widget: any, event: any) {
alert('entered ')
console.log('onDragEnter', widget, event);
console.log('drag enter containers', this.containers)
}
chicken(event) {
console.log('onDragEnter chicken', event);
}
onDragSuccess(widget: any, event: any) {
console.log('onDragSuccess', widget, event);
}
onDragOver(widget: any, event: any) {
console.log('onDragOver', widget, event);
}
onDragEnd(widget: any, event: any) {
console.log('onDragOver', widget, event);
}
onDragLeave(widget: any, event: any) {
console.log('onDragLeave', widget, event);
}
onMouseDown(){
this.dragOperation = true;
console.log('mouse down');
}
onMouseUp(event: any){
console.log(event);
this.dragOperation = false;
}
【问题讨论】:
-
你是否考虑过使用 RxJS 的强大功能来做到这一点?
-
请解释更多,你的想法是什么以及如何。因为我是新手
-
这是一个很好的例子:egghead.io/lessons/…
-
@Danimal,我开始了赏金,因为我无法理解它::(
-
我对这个库不太了解,但我建议使用 ng2-dragula。这个库有很好的回调和事件。 github.com/valor-software/ng2-dragula.
标签: angular callback drag-and-drop