Events 更改:JointJS中的源事件
大家圣诞快乐 我想在更改joint.dia.Link的源元素或目标元素时执行一些操作。首先,我尝试将代码放入“change:source”和“change:target”事件的回调函数中。然而,事实证明,这些回调函数是在链接的位置改变时调用的,而不是在源元素或目标元素改变时调用。然后,我尝试将代码放入LinkView.pointup()函数中,方法是添加一个标记,该标记在“change:source”和“change:target”事件的回调函数中设置,以指示已更改的元素。生成的代码如下所示:Events 更改:JointJS中的源事件,events,graph,hyperlink,diagramming,jointjs,Events,Graph,Hyperlink,Diagramming,Jointjs,大家圣诞快乐 我想在更改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的事件后,图形上的文本没有改变吗?如何刷新图形以显示已更改的状态元素
非常感谢 箭头位置改变时,
change:source
和change:target
事件确实也会触发。通常,链接的源
和目标
可以是点(具有x
和y
属性的对象)或元素(在不久的将来也是链接)-具有指向链接元素的id
属性的对象。如果您只对source
/target
作为一个元素感兴趣,那么只需在处理程序中检查change:source
和change:target
事件链接的source
/target
是否包含id
属性:
如果(this.get('source').id){/*…do something…*/}
确定,在我放置以下行joint.dia.LinkView.prototype.pointerup.apply(这是参数)之后,它似乎已经解决了;是pointerup:function(){}中的第一行。我已经将我的解决方案发布在google群组中。非常感谢!