大家圣诞快乐!
当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的事件后,图表上的文本没有改变?如何刷新图表以显示更改的状态元素?
非常感谢!