我在sigma.js中有一个非常简单的例子,它读取带有一些附加数据的gexf文件。
// Instanciate sigma.js and customize rendering :
var sigInst = sigma.init(document.getElementById('graph-container')).drawingProperties({
defaultLabelColor: '#fff',
defaultLabelSize: 14,
defaultLabelBGColor: '#fff',
defaultLabelHoverColor: '#000',
labelThreshold: 6,
defaultEdgeType: 'straight'
}).graphProperties({
minNodeSize: 0.5,
maxNodeSize: 5,
minEdgeSize: 1,
maxEdgeSize: 1
}).mouseProperties({
maxRatio: 4
});
// Parse a GEXF encoded file to fill the graph
// (requires "sigma.parseGexf.js" to be included)
sigInst.parseGexf(gexfFile);
这实际上只是从教程中获取的。现在,我想向所有节点添加一个on-click事件。谁能告诉我一个正确的方法来做到这一点?
答案 0 :(得分:8)
根据官方文件:
s = new sigma({...});
// Bind the events:
s.bind('overNode outNode clickNode doubleClickNode rightClickNode', function(e) {
console.log(e.type, e.data.node.label, e.data.captor);
});
https://github.com/jacomyal/sigma.js/blob/master/examples/events.html
(接受的答案对我不起作用。)
答案 1 :(得分:7)
第1步 - 编写事件处理程序
function onClick(event) {
window.console.log("clicked!");
}
第2步 - 查找活动名称
我一直想知道活动名称可能是什么。似乎“onmouseover”,“onmousedown”等已经被重命名,其中“onmouse”部分被截断,并且“节点”被添加到末尾。
因此,对于点击事件,它将是'downnodes'
第3步 - 将处理程序链接到点击事件:
您必须使用bind()函数将事件处理程序绑定到事件名称。
sigInst.bind('downnodes',onClick).draw();
活动列表@ v1.0.3
感谢Matt提供清单。
单击,右击,clickStage,doubleClickStage,rightClickStage,clickNode,clickNodes,doubleClickNode,doubleClickNodes,rightClickNode,rightClickNodes,overNode,overNodes,outNode,outNodes,downNode,downNodes,upNode,upNodes - all应为小写。