RXJS 拖放

2023-12-20

这个问题与 RXJS 有关。我正在尝试调整 github 中的拖放示例以适用于一类 div 而不仅仅是单个元素 ID。https://github.com/Reactive-Extensions/RxJS/blob/master/examples/dragndrop/dragndrop.html https://github.com/Reactive-Extensions/RxJS/blob/master/examples/dragndrop/dragndrop.html

为 div 提供类或 ID 的简单更改不起作用,并且我失去了拖动元素的能力

3个简单的改变:

HTML line 7 i.e. <div class="dragTarget">Drag Me!</div>
CSS line 1 i.e. .dragTarget { style attributes unchanged }
JS line 4 i.e var dragTarget = document.getElementsByClassName('dragTarget');

我不够熟练,不知道这是否是 RXJS 中的错误,或者该示例不够通用。有关 RXJS 事件的文档表明这些更改应该足够了。任何帮助表示赞赏。谢谢。


fromEvent将使用on and off您传递给它的任何对象的方法,否则它将使用addEventListener and removeEventListener。因此,如果您使用 jQuery,您可以简单地选择所有这些并使用它(Observable.fromEvent($('.targetNode'), 'mouseup')例如)。

否则,您可以使用任何带有on and off订阅或取消订阅事件的方法,就像我在下面所做的那样。

除此之外,您还可以使用target财产在MouseEvent你在每个流中获取的对象来获取你想要移动的实际 DOM 节点...

像下面的例子这样的东西应该可以解决问题。

(function (global) {

  /**
    selectNodes is a method to select a NodeList, but convert it to 
    a type that has `on` and `off` methods RxJS 2 expects to see for `fromEvent`
  */
  function selectNodes(selector) {
    var nodes = document.querySelectorAll(selector);

    return {
      // the selected nodes
      nodes: [].slice.call(this.nodes),

      // subscribe to an event on every selected node
      on: function(eventName, handler) {
        this.nodes.forEach(function(node) { node.addEventListener(eventName, handler); });
      },

      // unsubscribe from the event on every selected node
      off: function(eventName, handler) {
        this.nodes.forEach(function(node) { node.removeEventListener(eventName, handler); });
      }
    };
  }

  function main () {
    // IMPORTANT CHANGE: Use the selectNodes method we made
    var dragTargets = selectNodes('.dragTarget');

    // Get the three major events
    var mouseup   = Rx.Observable.fromEvent(dragTargets, 'mouseup');
    var mousemove = Rx.Observable.fromEvent(document,   'mousemove');
    var mousedown = Rx.Observable.fromEvent(dragTargets, 'mousedown');

    var mousedrag = mousedown.flatMap(function (md) {

      // calculate offsets when mouse down
      var startX = md.offsetX, startY = md.offsetY;

      // Calculate delta with mousemove until mouseup
      return mousemove.map(function (mm) {
        mm.preventDefault();

        return {
          left: mm.clientX - startX,
          top: mm.clientY - startY,
          target: mm.target, // IMPORTANT CHANGE: the element you care about
        };
      }).takeUntil(mouseup);
    });

    // Update position
    var subscription = mousedrag.subscribe(function (d) {
      d.target.style.top = d.top + 'px';
      d.target.style.left = d.left + 'px';
    });
  }

  main();

}(window));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RXJS 拖放 的相关文章

  • Angular 4显示当前时间

    在 Angular 4 变化检测系统中显示当前时间的正确 规范 方法是什么 问题如下 根据定义 当前时间每时每刻都在不断变化 但 Angular 4 变更检测系统无法检测到它 因此 我认为有必要明确调用ChangeDetectorRef d
  • 拖放到文件输入在 IE11 中不起作用

    谁能回答我 为什么拖放字段在 chrome 和 firefox 中工作正常 但在 IE11 中不起作用 当我从桌面拖放文件时 IE11 只是打开文件 IE版本 11 545 10586 0 HTML
  • 使用 .Net 检测外部应用程序中的拖放操作

    我需要检测拖放操作外用 是否可以 我想到写一个钩子来检测这些操作 任何人都可以指出我可以尝试挂钩哪些消息或 api 函数来检测拖放事件的正确方向吗 我想用 C 来做这个 提前致谢 您可以通过两条明显的路径来尝试此操作 第一个是挂钩参与调解拖
  • 如何处理解析器中的错误

    我正在尝试使用解析器来打造更好的用户体验 在幸福的道路上 一切都进展顺利 我似乎无法弄清楚如何处理异常 我的解析器调用一个服务 该服务会访问一个 webapi 项目 一个例子 Foo解析器 resolve route ActivatedRo
  • 在运行时拖动窗体上的控件

    我刚刚开始使用 WPF 但我正在尝试添加我的代码 来自 Winforms 使用户能够在运行时将任何控件拖动到他们想要的任何位置 但我似乎无法获取鼠标当前的位置 呃 没有鼠标位置 在 Mouse 事件中 您可以使用 e GetPosition
  • 将 React 值从子级传递给父级

    我正在努力解决一些可能非常简单的事情 我的父组件是一个搜索小部件 它需要使用在单独的抽屉组件中定义的过滤器 目前 用户可以输入搜索查询 该查询会调用 API 并且需要根据抽屉组件中的选择器来过滤结果 但是 我无法将父母和孩子联系起来以实现这
  • 使用 Qt 进行拖放:悬停时了解目标应用程序 - 这可能吗?

    我目前正在探索从 Qt 应用程序拖放到未知目标应用程序的可能性 问题是 Qt 应用程序是否可以接收有关即将接收 drop 的应用程序的信息 例如进程名称或标题 一个 虚构的 示例可以是将绘图从 Qt 窗口拖动到文本编辑器或电子表格编辑器 在
  • WPF 的拖放列表框

    我正在寻找一个简单的ListBox具有内置的拖放功能 我认为 Silverlight 4 工具包有 The BoxList应该可以 通过拖放项目重新排序 从一个项目中拖动项目BoxList到另一个 显示拖动项目的预览 幽灵版本 显示放置位置
  • 了解 rxjs 中的背压 - 仅缓存 5 个等待上传的图像

    我正在开发一个节点项目 需要提交数千张图像进行处理 在将这些图像上传到处理服务器之前 需要调整它们的大小 因此我有一些类似的内容 imageList map image gt loadAndResizeImage merge 3 map i
  • 单击时禁用鼠标移动

    我正在尝试拖放 这是我的代码 box title live mousedown click function e var self this var Box self parent box if e type mousedown windo
  • 用于更改向量中元素顺序的闪亮小部件

    在很多网站上 您都有一个拖放界面来更改列表中元素的顺序 我正在寻找类似的东西闪亮 我希望用户能够拖放列表中的元素 通过更改顺序来更改优先级 现在我有一个滥用的解决方案selectizeInput 这是可行的 但当选择列表变得更大时 它很快就
  • 错误:类型 typeof Observable 上不存在属性计时器

    代码如下 import Component from angular2 core import Observable from rxjs Rx Component selector my app template Ticks every s
  • 如何在 macOS 上的 SwiftUI 中设置拖动图像

    我正在尝试更改 GridView 的默认拖放预览图像 该图像似乎包含网格中的所有可见项目 据我了解 我应该能够设置NSItemProvider previewImageHandler块来自定义所使用的图像 我似乎找不到任何关于返回自定义图像
  • JavaFX - Outlook 附件 - DnD

    您好 我需要一个 DnD 解决方案来将 Outlook 邮件附件拖到堆栈窗格中 JavaFX Outlook 2010 stackpaneDragAndDropZone setOnDragOver DragEvent event gt Dr
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 如何在 RxJS 订阅方法中等待

    在 RxJS 主题的订阅回调内部 我想要await on an async功能 下面是打字稿转译器抱怨的代码示例 错误 131 21 TS2304 找不到名称 await async ngOnInit this subscriber dat
  • HTML5 仅拖放图像

    我想做的是 如果所有拖动的文件都是图像 则将其删除 但如果有其他文件扩展名 则不要删除它们 而仅删除图像 这是我的尝试 HTML div div JavaScript var dropzone document getElementById
  • ReactiveX:仅对每组中的最后一项进行分组和缓冲

    如何对 Observable 进行分组 并从每个 GroupedObservable 中仅将最后发出的项保留在内存中 这样每个组的行为就像BehaviorSubject 一样 像这样的东西 user 1 msg Anyone here us
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • 在网格上拖动时拖动图像更改

    我正在 StartDrag 上创建自定义 DragObject 的实例 procedure TForm1 GridStartDrag Sender TObject var DragObject TDragObject begin DragO

随机推荐

  • 在 Spark on Yarn 中使用类型安全配置

    我有一个从配置文件读取数据的 Spark 作业 该文件是类型安全的配置文件 读取配置的代码如下所示 ConfigFactory load getConfig com mycompany 现在我不将 application conf 组装为我
  • 带有父子行的 Angular Material 垫表的替代颜色

    我有一个有角度的材料mat table我使用 CSS 样式来替代行颜色 这是 CSS 样式 mat row nth child even background color e4f0ec mat row nth child odd backg
  • 如何正确安装 django-nose?

    我在运行 django nose 时遇到问题 Per the 安装说明 https github com jbalogh django nose 我安装的方式是 Running pip install django nose Adding
  • Python:如何使用splinter/浏览器一次性填写表单?

    目前 我正在网站上填写表格 内容如下 browser fill form firstname Mabel browser fill form email email protected cdn cgi l email protection
  • 有没有办法从 Excel 特定单元格收集数据并发送给 SQL Server?

    我有一个 Excel 表格模板 希望用户每天填写 一张表告诉我哪些单元格正在读 写 意味着我想将哪些单元格发送到我的数据库 该形式不是管状的 即 有时数据被设置 A3 gt A4 或 A3 gt B3 我想知道是否有 Excel 插件或任何
  • OAuth登录完成后重定向到之前的URL(flask-dance)

    我正在开发一个 Flask 应用程序 允许用户使用 OAuth 以 Github 作为提供者 和 Flask dance 库登录 由于某种原因 成功登录后 我无法重定向到我将用户发送到登录页面的页面 当用户尝试连接时 例如http loca
  • c 函数是否可以同时接受 double 和 long double 参数?

    我在文件 mag c 中有一个函数 mag 用于计算数组的大小 include
  • 在Master上触发事件并在Salt Minion上等待“响应事件”

    我想要的是由 Minion 调用的类似 RPC 的行为 并将其放入某种脚本中 然后可以由任何 非 Salt 非 Python 应用程序和服务调用 在Master上触发一个事件 有效负载对应于命令行参数 the Reactor system
  • 创建的 PDF 不反映对原始文档所做的更改

    我有一个 Google 文档模板 它会自动复制到文件夹中 并用电子表格单元格中的值替换特定值 该模板包含诸如以下的值 lt lt 41 gt gt 它们用于 查找并替换 来自电子表格的值 查找和替换过程很好 文档的结果如下图所示 现在 我希
  • 查找特定值的列名或表名

    我想在我的数据库中搜索一个特定的值 但我不知道它到底在哪里 SQL Server中是否存在返回特定值的列名或表名的查询 假设我有一个像 123 这样的列的值 但我不知道 123 属于哪个表 也不知道它的列名称 我可以编写一个查询来查找该值所
  • 纬度/经度转换为 x/y 坐标

    我有一个 openstreetmap 图像 左上角是纬度 80 经度 169 右下角是纬度 56 经度 190 图像的宽度 2618 高度 1513 如何将给定的纬度 经度坐标转换为图片的 x y 坐标 我自己尝试了一下 但不知道如何转换坐
  • CSS 悬停工具提示的 z 索引

    我仅使用 CSS 悬停缩略图
  • 检测 Google Chrome 页面预取

    我正在构建一个简单的工具来跟踪和增加网站的访问次数 这很简单 当服务器收到 GET 请求时 它会将数据库中该网站的计数器加 1 但是 我在使用 Google Chrome 的预渲染引擎时遇到了一些问题 预测网络操作以提高页面加载性能 该网站
  • 将模板与 HTML 自定义元素结合使用

    我刚刚开始学习 HTML 自定义元素 通过阅读一系列介绍 教程和文档 我想我已经很好地掌握了它的工作原理 但我对正确使用或不使用的方法有一个哲学问题这
  • MVC 4 中的部分实体类未显示数据注释

    我已经看到了许多关于如何通过部分类向通过实体框架生成的类添加元数据注释的解释 数据库优先 有人可以告诉我为什么这些新的显示值没有显示在我的视图中吗 这两个都是与我的实体框架生成的类相同的命名空间的一部分 MetadataType typeo
  • 为什么 pip 在我的虚拟环境之外安装软件包?

    在做了虚拟环境的来源之后我尝试 pip install U no deps django social auth 它返回 OSError Errno 13 Permission denied usr local lib python2 6
  • 如何确保 Angular 服务构造函数中的异步初始化完成?

    请专家告诉我 在调用类中的其他函数时 如何确保服务构造函数中的异步初始化完成 constructor var sock new SockJS this chatUrl this stompClient Stomp over sock thi
  • NASM - 如何创建结构指针数组并访问它们

    所以我的问题是这样的 我有一个名为顶点的结构 struc vertex x resq 1 y resq 1 z resq 1 endstruc 我想创建一个指向由该定义组成的结构的指针数组 就像加载顶点表单文件并将它们保存在结构中和数组中的
  • 将图像从 URL 上传到 Firebase 存储

    我想知道如何通过 URL 而不是输入 例如 将文件上传到 Firebase 的存储中 我正在从网站上抓取图像并检索它们的 URL 我想通过 foreach 语句传递这些 URL 并将它们上传到 Firebase 的存储 现在 我有 fire
  • RXJS 拖放

    这个问题与 RXJS 有关 我正在尝试调整 github 中的拖放示例以适用于一类 div 而不仅仅是单个元素 ID https github com Reactive Extensions RxJS blob master example