【发布时间】: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