我正在扩展mxgraph删除控件example以添加删除控件到我的图中动态生成的节点。该示例的源代码可here应用mxgraph无限循环
的问题是在这部分代码 -
// Overridden to add an additional control to the state at creation time
mxCellRendererCreateControl = mxCellRenderer.prototype.createControl;
mxCellRenderer.prototype.createControl = function(state)
{
mxCellRendererCreateControl.apply(this, arguments);
var graph = state.view.graph;
if (graph.getModel().isVertex(state.cell))
{
if (state.deleteControl == null)
mxCellRendererCreateControl.apply重写的回调createControl内似乎意在工作(调用在创建附加控件之前的原始功能)与负载上图形的初始状态。但是,一旦我动态地将节点添加到图中,并且回调由mxgraph的validate/redraw调用,控件进入无限循环,其中'apply'函数基本上保持调用自己(即回调)。
我有点无知,因为当我调试时,上下文(this)看起来不错,但我找不到原因而不是调用原型方法,它只是在循环中调用重写的函数。我究竟做错了什么?
你能细说什么'mxCellRendererCreateControl'是,为什么其他地区你重写并使用'prototype'? –
是否可以创建一个最小的在线示例? –
@GhassenLouhaichi mxCellRendererCreateControl是mxCellRenderer.js中的createControl方法。你可以在这里看到它的来源 - https://github.com/jgraph/mxgraph/blob/master/javascript/src/js/view/mxCellRenderer.js,第600行。它创建你想要的基本矩形/形状先在形状顶部绘制并添加删除控件之前先显示。至于为什么我重写它,这只是mxgraph中的推荐方式。您可以在此帖子中发布的第一个示例链接中看到这一点。您可以在节点顶部看到删除图标。这些是由压倒性的。 – Jay