我正在使用Angular 2和ng2-dragula
。
我想在拖拽袋中点击拖放物品。
这是我的 app.component.html :
<div id="rootFrame">
<div class="tasksFrame">
<div id="tasksCont" class='container' [dragula]='"first-bag"'>
<div (click)="onClick('ha')">Task 1</div>
<div (click)="onClick('ba')">Task 2</div>
<div (click)="onClick('ca')">Task 3</div>
</div>
</div>
<div class="editorFrame">
<div id="editorCont" class='container' [dragula]='"first-bag"'>
</div>
</div>
<div *ngIf="showProps" class="propertiesFrame">
<form>
Eigenschaft 1<br>
<input type="text" name="property1"><br> Eigenschaft 2<br>
<input type="text" name="property2"><br> Eigenschaft 3<br>
<input type="text" name="property3"><br>
</form>
</div>
</div>
永远不会调用onClick()
函数。
我的组件 app.component.ts 如下所示:
import { Component } from '@angular/core';
import { DragulaService } from 'ng2-dragula/ng2-dragula';
@Component({
selector: 'my-app',
templateUrl: 'app/app.component.html',
styleUrls: ['app/app.component.css'],
viewProviders: [DragulaService],
})
export class AppComponent {
private showProps = false;
constructor(private dragulaService: DragulaService) {
dragulaService.setOptions('first-bag', {
removeOnSpill: true,
copy: (el: Element, target: Element, source: Element, sibling: Element): boolean => {
var editorcont = document.getElementById('editorCont');
return !target.contains(editorcont);
},
accepts: (el: Element, target: Element, source: Element, sibling: Element): boolean => {
var taskscont = document.getElementById('tasksCont');
return !target.contains(taskscont); // elements can not be dropped to Tasks Container
},
});
};
onClick(item: String) {
//NOT FIRED
var editorcont = document.getElementById('editorCont');
// if(editorcont.contains(element)){
// this.showProps = true;
// }
// else{
// this.showProps = false;
// }
};
}
我认为这是因为div在一个dragula容器中。但是如何让dragula容器中的div可以点击?
答案 0 :(得分:0)
onClick()
未被调用,因为您在技术上没有点击div
拖放,只需左键单击div并将其拖走即可触发点击事件。您需要点击div
,暂时保留它,然后在那里释放它。真的很难解释,也许w3schools定义会清除:
单击鼠标时会触发 onclick 属性。
在元素上按下鼠标按钮时会触发 onmousedown 属性。
与onmousedown事件相关的事件顺序(对于鼠标左键/中键):
- onmousedown事件
- onmouseup
- 的onclick
无论如何,您正在寻找 mousedown
事件,它会在按下左键时触发:
<div class="tasksFrame">
<div id="tasksCont" class='container' [dragula]='"first-bag"'>
<div (mousedown)="onClick('ha')">Task 1</div>
<div (mousedown)="onClick('ba')">Task 2</div>
<div (mousedown)="onClick('ca')">Task 3</div>
</div>
</div>