【问题标题】:change:source event in JointJS更改:JointJS 中的源事件
【发布时间】:2014-01-13 05:24:03
【问题描述】:

大家圣诞快乐!

当joint.dia.Link 的源元素或目标元素发生变化时,我想做一些事情。首先,我尝试将代码放在'change:source'和'change:target'事件的回调函数中。然而,事实证明,这些回调函数会在链接的位置发生变化时立即调用,而不是在源元素或目标元素发生变化时调用。然后我尝试将代码放在 LinkView.pointup() 函数中,通过添加一个标记,该标记设置在'change:source'和'change:target'事件的回调函数中,以指示更改的元素。结果代码如下所示:

link.on('change:source', function(){this.src_changed = true;});
link.on('change:target', function(){this.dest_changed = true;});

joint.shapes.custom.ModelLink = joint.dia.Link.extend({
     defaults: joint.util.deepSupplement({
        type: 'custom.ModelLink',
    }, joint.dia.Link.prototype.defaults)
});

joint.shapes.custom.ModelLinkView = joint.dia.LinkView.extend({
    pointerdown: function () {
        joint.dia.LinkView.prototype.pointerdown.apply(this, arguments);
    },
    pointermove: function () {
        joint.dia.LinkView.prototype.pointermove.apply(this, arguments);
    },
    pointerup: function (evt, x, y) {
        var link = this.model;
        if(link.src_changed) { // do something}
        if(link.dest_changed) {// do something}
        joint.dia.LinkView.prototype.pointerup.apply(this, arguments);
    }
});

但是,我发现 src_changed 和 dest_changed 有时在我只是拖动链接的一端时都设置为 true。为什么会这样?我怎样才能解决这个问题?或者有什么新方法可以对源元素或目标元素的变化做出一些反应?

另外,在我使用model.set('events', events)重置joint.shapes.uml.State的事件后,图上的文字没有变化?如何刷新图表以显示更改的状态元素?

非常感谢!

【问题讨论】:

  • 好的,在我放置以下行之后似乎解决了joint.dia.LinkView.prototype.pointerup.apply(this, arguments);成为 pointerup:function(){} 中的第一行。

标签: events graph hyperlink diagramming jointjs


【解决方案1】:

change:sourcechange:target 事件确实在箭头位置发生变化时也会触发。通常,链接的sourcetarget 可以是点(具有xy 属性的对象)或元素(在不久的将来还会是链接)- 具有@ 的对象987654327@ 指向链接元素的属性。如果您只对 source/target 是一个元素感兴趣,您可以在您的处理程序中检查 change:sourcechange:target 事件是否链接的 source/target 包含 @ 987654334@财产:

if (this.get('source').id) { /*... do something ...*/ }

【讨论】:

  • 是的,完全正确。我已经在谷歌群组中发布了我的解决方案。非常感谢!
猜你喜欢
  • 2015-01-09
  • 2012-12-20
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2011-09-21
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多