1

大家圣诞快乐 !

在触发某些事件后,我必须更新由 JointJS 库引入的joint.shapes.uml.State 元素的事件。我使用 set('events', events) 函数。我将元素打印到控制台,发现元素的事件已经更新。但是图表上显示的事件并没有改变。示例代码可在以下位置访问:

http://jsfiddle.net/GJH_ICT/6pmbQ/5/

您可以拖动链接的末尾来触发事件。这是更新功能:

function resetEvents(id, old, newer) {
    var events = graph.getCell(id).get('events');
    for(var i = 0; i < events.length; ++i) {
        events[i] = events[i].replace(old, newer);
    }
    graph.getCell(id).set('events', events);
    console.log(graph.getCell(id).get('events'));
}

此外,我注意到joint.shapes.uml.State 元素中的updateEvents() 函数,并尝试了该函数,但它不能正常工作。这个函数有什么作用?

谢谢!

4

1 回答 1

2

这是因为您正在更改events数组。当您.set()稍后调用时,内部机制set()认为它是完全相同的对象 - 引用是相同的 - 换句话说,===传递的对象与先前存储的对象之间的运算符返回true

于 2013-12-26T17:59:25.980 回答