为每个对象 JointJS 创建一个 ToolElement

2024-03-26

我试图为每个对象创建一种工具菜单 - 当您单击或将鼠标悬停在某个元素上时,它会显示可以执行的几个操作:删除、旋转、放大、链接等。

我用过这个question https://stackoverflow.com/questions/30153345/how-to-give-jointjs-elements-a-remove-tool/作为指导方针 - 并且能够在以下工具的帮助下添加和扩展 ToolElement 本身JFiddle http://jsfiddle.net/kj4bqczd/3/.

然而,在那之后我就陷入了链接的功能。我想做的是绿色箭头。当我单击并拖动绿色箭头时,我希望链接开​​始从对象拖动,就像端口一样,仅从对象本身拖动。

我尝试阅读文档,但它没有关于如何从元素中拖动的痕迹。

有一个解决方案,您可以添加magnet : true属性到文本,这样当您单击该对象时 - 拖动它,当您单击文本时,您开始拖动链接。

在下面的另一个解决方案中,我尝试手动将磁铁添加到圆圈中。从视觉上看,它在某种程度上满足了我的需要,但链接的来源始终是那个绿色圆圈,即使它消失了,并且在调用对象 ti 检查链接时,它不会给我这些链接。

joint.shapes.tm.toolElement = joint.shapes.basic.Generic.extend({

    toolMarkup: ['<g class="element-tools">',
        '<g class="element-tool-remove"><circle fill="red" r="11"/>',
        '<path transform="scale(.8) translate(-16, -16)" d="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z"/>',
        '<title>Remove this element from the model</title>',
        '</g>',

        '<g class="element-tool-link"><circle magnet="true" fill="green" r="11" cx="25" />',
        '<path transform="scale(.8) translate(15, -16)" d="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z"/>',
        '<title>Link element</title>',
        '</g>',

        '</g>'].join(''),

   defaults: ...

});

我认为我的底线问题是弄清楚如何使用绿色箭头上的磁铁属性并将其绑定到对象上。

任何帮助,将不胜感激。


None

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

为每个对象 JointJS 创建一个 ToolElement 的相关文章

  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • 我可以用一个简单的函数制作一个迭代器吗? (没有生成器或 Symbol.iterator)

    我一直在尝试使用普通函数创建一个迭代器 而不使用生成器或使用Symbol iterator用于学术目的的协议 为此 我创建了一个函数 它返回一个带有next参数 但尝试将其作为iterable的论证for of循环会产生不需要的结果 这是到
  • 如何将节点 sqlite3 与 q (promise) 一起使用

    我正在尝试将 Promise 与 sqlite3 一起使用 这是我的源代码的一部分 this deleteTag function tag project var db this db if project return q nfcall
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • “move(-1)”作为 AngularJS 表达式有什么问题吗?

    我收到此错误 parse ueoe Unexpected end of expression move 从这段代码来看
  • 使用 jquery 更改锚文本和图标

    我有一个隐藏或显示 div 的锚标记 但我无法更改它的文本和图标 如何更改文本和图标标签 因为目前它将图标标签解析为常规文本 锚标记 a class collapse info btn i class icon arrow up icon
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • Webpack - 资产大小限制中的警告:以下资产超出了建议的大小限制 (244 KiB)

    当我在生产模式下运行 webpack 时 有资产规模限制 超出 的警告 我怎样才能运行而不出现这个错误 在我的项目中 我包含 css 并且我看到 webpack 构建中包含一些 node module 目录 但是如果我排除 css 的 no
  • UpdatePanel 启动脚本未执行

    我正在编写一个在 SharePoint 网站中使用的 ASP NET Web 部件 并尝试使用 UpdatePanel 来呈现查询结果 我想使用 JQuery 插件来修改从异步回发返回的表 但我无法让启动脚本在异步更新上执行 我发现这个帖子
  • Google 地图 Javascript v3 折线点击事件

    我正在尝试显示一张地图 其中有多条路线布置为折线 单击多段线时 我想显示特定于该线的数据 将数据与线关联不是问题 但无论单击哪条线 显示的数据都会与最近绘制的线关联 就好像每条新折线都会覆盖最后一条线一样 我有一个数据库 其中包含 gpx
  • 将屏幕宽度获取到 javascript 变量中并通过 ajax 将其发送到 php 页面以避免页面加载

    这是JS检测我的页面命名上的屏幕分辨率index html并将其发送到 php 以便可以使用以下方式检索值 GET 这是我的PHP文件命名的内容process php
  • 带有桌子的嵌套表

    我在应用了表排序器的表中嵌套了表 它在嵌套表中添加了排序标题 但是它们没有对行进行排序 并且抛出了JavaScript错误 我想拥有 嵌套表不可排序 巢表上的排序实际上可以工作 但不是现状 您的第一个选择要容易得多 使嵌套表不可排序 像这样
  • 如何处理 setTimeout() 的多个实例?

    阻止创建 setTimeout 函数的多个实例 在 JavaScript 中 的最推荐 最佳方法是什么 一个例子 伪代码 function mouseClick moveDiv div 0001 mouseX mouseY function
  • FullCalendar:如何重新创建/重新初始化 FullCalendar 或批量添加多个事件

    我正在尝试将新事件批量添加到日历中 但未能找到方便的使用方法 所以我决定用新的事件数组重新初始化视图 所以我尝试了以下方法 var events title Event start new Date y m d 10 description
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • 除非打开开发人员工具,否则 IE8 Javascript 无法运行?

    由于某种原因 在 IE8 中 除非我在打开开发工具的情况下重新加载页面 否则 javascript 不会运行 我关闭开发人员工具并重新加载页面 然后 javascript 停止工作 我没有收到任何错误报告 无论如何它们也没有任何用处 还有其
  • React Router Tabs——保持组件安装

    我使用 React Router 创建了选项卡 每个选项卡都有不同的路线 但是 我想通过保持隐藏选项卡的安装来维护选项卡转换之间的选项卡状态 我该如何实现这一目标 每次路由切换时 React 路由器都会重新安装每个组件 已经有人问过这个问题
  • 如何从 WordPress 中的 jquery include 函数中删除版本查询变量

    这里有几个类似的问题 但似乎没有一个能解决我的具体情况 至少我发现没有 这是我用来在 WP 主题中包含最新 jquery 版本的代码 并确保它出现在页脚中 function current jquery version global wp
  • 检测 html 选择框上的编程更改

    有没有办法让 HTML 选择元素在每次以编程方式更改其选择时调用函数 当使用 JavaScript 修改选择框中的当前选择时 IE 和 FF 都不会触发 onchange 此外 更改选择的 js 函数是框架的一部分 因此我无法更改它以在结束

随机推荐

  • 使用 Perl 的 SOAP::Lite 和 WSDL 文件进行 SOAP 调用

    我想对本地 Web 服务进行 SOAP 调用 Web 服务是通过 WSDL 文件定义的 见下文 我想使用 Perl 和 SOAP Lite 我试过这个 use strict use warnings use SOAP Lite my end
  • Xcode 异常断点不会打印抛出异常的详细信息

    SUMMARY 当我设置异常断点时 我没有收到异常消息 如何获取异常消息 我已经知道如何获取堆栈跟踪 但不包括异常消息 DETAILS 过去我使用 Xcode 开发 iOS 应用程序 当出现问题时 我会收到错误 异常 该异常通常会出现 无法
  • 如何在 Gattle 中注入恒定数量的用户?

    我不清楚如何控制加特林中的封闭工作负载模型 如果我使用constantConcurrentUsers 像这样 myScenario inject constantConcurrentUsers 40 during 2 minutes 我认为
  • Rails 资产最佳实践 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是 Rails 新手 无法找出组织
  • 迅捷继承:超级的超级

    假设这三个类具有简单的层次结构 class A func foo print A class B A override func foo super foo print B class C B override func foo print
  • 使用迭代器初始化字符串,出现“转置指针范围”异常

    也许是一个菜鸟问题 但为什么是这两行 vector
  • 将方法列表中的方法应用于 pandas 数据框

    这是我的第一个问题 所以请耐心等待 我的问题如下 假设我们有一个 pandas Dataframe 并且我们希望动态地将一些 pd Series 方法应用于该 Dataframe 的一组列 为什么下面的例子不起作用 testframe pd
  • Jenkinsfile 中的 Anaconda

    由于我们运行的测试越来越长 我认为从 Travis CI 切换到 Jenkins 在我的本地计算机上 是个好主意 设置 Jenkins 相对简单 但让我的 Jenkinsfile 工作 却不是那么简单 我正在尝试下载 miniconda g
  • 基于存储过程参数的条件 where 子句?

    我有一个带有参数的 SQL Server 2005 存储过程 includeClosedProjects 有一个WHERE我想根据这个参数控制的子句 create proc sel projects incClosedRel int 1 a
  • Sublime Text 2 Javascript 控制台

    我是 Sublime Text2 和 Javascript 新手 使用 Windows 8 我正在尝试在 Sublime Text 中创建一个 Javascript 控制台 我尝试了两种方法 但没有一个对我有用 方法一 我已经安装了在这里找
  • 如何在 android 中从 Http 或 RTSP Url 流式传输视频

    我想在 android 上播放 Http 和 Rtsp 的视频 目前我正在尝试使用 http 链接 但是当我的活动开始时 它只是开始播放带有空白黑屏的音频 没有视频显示 我在下面发布了我的代码 感谢您提前提供的任何帮助 如果有人可以提供一个
  • 检测字节顺序

    我目前正在尝试创建一个C无论目标系统的字节顺序如何 源代码都能正确处理 I O 我选择了 little endian 作为我的 I O 约定 这意味着 对于 big endian CPU 我需要在写入或读取时转换数据 转换不是问题 我面临的
  • C++ TR2 文件系统库的状态如何?

    截至上次布里斯托尔会议 C TR2 文件系统库的状态如何 它将成为 C 1Y C 14 的一部分 还是暂停 或者最近三次会议有任何已知的评论吗 It has 最近获得ISO委员会一致批准 http article gmane org gma
  • Ember 数据:已加载数据哈希...但未提供主键“未定义”

    我正在尝试使用 Ember Data 来加载模型 获取模型的 AJAX 调用似乎成功 但我得到以下信息 Uncaught Error assertion failed A data hash was loaded for a model o
  • 该元素导致 Firefox 中的元素溢出

    我不使用 Bootstrap 或 reset css reboot css 我正在尝试使用通用 css 构建一个网站 我正在做非常基本的事情 但我到处都得到 这个元素导致元素溢出 我已经有一段时间没有在没有任何 css 框架的情况下完成布局
  • C 中的字符串和指针

    include
  • 未检测到 Flash 10:世界上最普遍的网络视频错误?

    问题如下 确保您对网站上 Flash 版本 x 的要求能够正确检测到更高版本的 Adob e Flash Player 版本 10 或 1y 的存在的最佳方法是什么 现在谜团来了 为什么这么多需要 Flash Player 版本 8 和 9
  • 01 背包专业化

    抱歉 如果这个问题已经得到解答 但我对算法没有深入的了解 并且并不总是注意到算法不同专业之间的微妙之处 我有 我认为是 01 背包问题的一个轻微变体 我有一个背包 其最大重量为 W 有 N 个重量为 w 价值为 v 的物品可供选择 我想要做
  • 为什么 Arc::try_unwrap() 会导致恐慌?

    我正在编写一个简单的聊天服务器 它向所有连接的客户端广播消息 由于我是初学者 代码可能看起来很糟糕 对等点尚未在任何地方使用 因为我想将其传递给handle client函数也是如此 因此当数据在流中可用并成功读取时 我想在所有连接的客户端
  • 为每个对象 JointJS 创建一个 ToolElement

    我试图为每个对象创建一种工具菜单 当您单击或将鼠标悬停在某个元素上时 它会显示可以执行的几个操作 删除 旋转 放大 链接等 我用过这个question https stackoverflow com questions 30153345 h