是否有一种简单的方法可以在节点上双击vis.js创建超链接/ javascript-action?

时间:2015-01-21 00:38:10

标签: javascript angularjs onclicklistener vis.js

在vis.js中定义节点http://visjs.org/network_examples.html,如下所示:

var nodes = [
{id: 1, label: 'Node1'},
{id: 2, label: 'Node2'},
{id: 3, label: 'Node3'},
{id: 4, label: 'Node4'}
];

我想知道的是,您是否可以创建一个节点双击(或其他事件/点击类型)操作,如下所示:

var nodes = [
{id: 1, label: 'Node1', double-click: 'Arbitrary_OnClick_Function()'},
{id: 2, label: 'Node2', double-click: 'document.getElementById("div1").innerHTML="Node 2 was clicked"'},
{id: 3, label: 'Node3', double-click: 'https://www.google.com;target="_blank"'},
{id: 4, label: 'Node4', double-click: '#SomePageSection'}
];

也许有办法结合angular.js(github.com/edgaraafelix/angular-visgraph)或非简单地通过vis.js方法on(event,callback)http//visjs.org/docs/network.html#Methods和{{3 }})。

2 个答案:

答案 0 :(得分:5)

因此,从您拥有节点示例的同一个文档中,您最终会创建一个网络,例如

var network = new vis.Network(container, data, options);

(数据对象包含节点和边)

然后你可以在网络上放置一个事件监听器,你知道从这个属性中点击了哪个节点

network.on( 'click', function(properties) {
    alert('clicked node ' + properties.nodes);
});

答案 1 :(得分:0)

我有完全相同的需求。从Simon的回答开始,我最终添加了以下代码:

UINavigationBar

network.on("doubleClick", function (params) { params.event = "[original event]"; window.open("/myurl/?id="params.nodes[0],'_blank'); }); 是我在url中使用的节点的ID。

this visjs page来源提供了更多示例。

问题:我这适用于您双击的任何网络对象。我不知道如何让它只在节点上工作......