javascript - RxJS:我怎样才能使用 event.preventDefault() 来处理掉落事件?

标签 javascript rxjs

我的标记:

<section id="drop-target">
  Drop file here...
</section>

我的代码:

var dropTarget = document.getElementById('drop-target');

Rx.Observable.fromEvent(dropTarget, 'dragover').subscribe(function(event) {
  event.preventDefault();
});

var dropStream = Rx.Observable.fromEvent(dropTarget, 'drop');

dropStream.subscribe(function(event) {
  console.log('This will be called.');
  event.preventDefault();
});

dropStream.map(function(event) {
  console.log('This will not be called.');
  return event.dataTransfer.files[0].path;
});

知道如何调用我的最后一个 map 回调吗?我需要 preventDefault 用于 dropdragover 以防止浏览器打开文件。

最佳答案

您只需要订阅您的 map 流。 map 所做的就是创建一个新的可观察对象,它将在流上运行 map 操作。但是你仍然需要订阅才能让它做一些事情:

dropStream
    .map(function (event) {
        console.log("hello");
        return event.dataTransfer.files[0].path;
    })
    .subscribe(function (path) {
        console.log("path=" + path);
    });

关于javascript - RxJS:我怎样才能使用 event.preventDefault() 来处理掉落事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28230517/

相关文章:

javascript - 如何在事件发生后重写 jQuery 函数?

javascript - 修改与 Angular 异步管道 react 方式一起使用的流中的数据

javascript - 如何通过高地从远程 JSON 数组创建对象流?

javascript - 为什么 redux 调度发生在 Hook 值更新之前?

javascript - Angular/webpack 站点中未定义 jQuery

angular - 如何在 Angular 解析器的管道中进行过滤?

javascript - 如何在 JavaScript 中使用 Observables 来处理 "eachSeries"?

javascript - 如何在 cycle js 中从 JSON 数组创建组件

angular - RxJS: takeUntil() Angular 组件的 ngOnDestroy()

javascript - 将 if 语句转换为 switch 语句