我正在尝试使用 Cytoscape 和 AngularJS 1.6 创建网络工作流程
创建两个节点后,用户可以在它们之间创建边。为此,我使用 cy.on('cxttap')
cytoscape 函数检测两个节点上的右键单击,然后插入新边。
这很好用。直到我添加了一个新 View ,用户可以在其中查看数据库中保存的工作流程。问题是,如果我打开“查看”选项卡,然后返回“创建”选项卡,cy.on('cxttap')
函数被调用两次,并且在 cytoscape Canvas 上插入了两条边,但在我的范围变量中只创建了一个条目。我曾经对两个 View 使用相同的工厂,但现在我对每个 View 使用不同的 Angular 工厂。
如果我多次打开这些选项卡之间的切换,则打开查看选项卡的次数就是调用该函数的次数,因此行数会更多。
这里(https://jsfiddle.net/y47kwpg7/4/)是我的两个 View 及其 Controller 的代码片段。 “创建 View ”-->“MlalTextWorkflowGeneratorCtrl”和“查看 View ”-->“MlalTextWorkflowViewerCtrl”。
(请原谅我,我不知道如何让它在单个文件中工作)
我这里的工厂用于 cytoscape Canvas ,并且对于另一个 View 也有类似的工厂,但具有不同的 id 选择。
感谢您的帮助!
最佳答案
您要么需要
(1) 如果您重复使用实例,请删除旧监听器,或者
(2) 每次创建新 View 时都会创建一个新实例。
关于javascript - Cytoscape 事件 cxtap 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44997403/