RXJS拖放onDrop/onDragOver
我试图使用RXJS进行拖放 有人知道如何使用RXJS正确地进行onDrop或onDragOver吗 这是我试过的。但是不工作RXJS拖放onDrop/onDragOver,rxjs,Rxjs,我试图使用RXJS进行拖放 有人知道如何使用RXJS正确地进行onDrop或onDragOver吗 这是我试过的。但是不工作 let mouseup = Observable.fromEvent(document, 'mouseup'); let mousemove = Observable.fromEvent(document, 'mousemove'); let mousedown = Observable.fromEvent(target,
let mouseup = Observable.fromEvent(document, 'mouseup');
let mousemove = Observable.fromEvent(document, 'mousemove');
let mousedown = Observable.fromEvent(target, 'mousedown');
const drop = mousedown
.flatMap((md) => {
return Observable
.concat(
[
mousemove.take(1).ignoreElements(),
mouseup.take(1)
]
);
});
这里是另一个尝试,它似乎是有效的。但它会在鼠标移动时开火,而不仅仅是在拖动后开火
const drop = mousemove
.switchMap((mm) => mouseup.take(1));
如果你想拥有所有的拖动事件,你可以在这里使用它
let up$ = Observable.fromEvent(document, 'mouseup');
let move$ = Observable.fromEvent(document, 'mousemove');
let down$ = Observable.fromEvent(document, 'mousedown');
let drag$ = down$.switchMap(down => move$.takeUntil(up$));
这将发出“拖动”时触发的每个mousemove事件
它也很容易适应你的需要。假设您需要拖动的x距离:
let distance$ = down$.switchMap((down: MouseEvent) =>
move$.map((move: MouseEvent) => (move.clientX - down.clientX))
.takeUntil(up$));
你想要同样的,但也支持触摸吗?没问题!只需将三个输入流与它们的触摸等价物合并,就可以了
我希望这能回答你的问题
本我做了一些黑客攻击。让它工作起来。但也不确定这是否正确。仍然欢迎任何帖子或建议。谢谢