angularjs 有没有一个简单的方法来创建一个超链接/javascript-action的节点双击在维斯,js?

qnzebej0  于 2023-04-28  发布在  Angular
关注(0)|答案(2)|浏览(205)

在维斯中定义节点。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'}
];

也许有一种方法可以做到这一点与角相结合。js(github.com/edgaraafelix/angular-visgraph)或非简单地通过vis。js方法on(event,callback)http//visjs.org/docs/network.html#Methods和http://visjs.org/docs/network。html#Events)。

vxf3dgd4

vxf3dgd41#

因此,从您有节点示例的同一文档中,您最终创建了一个网络e。g的。

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

(the数据对象包含节点和边)
然后你可以在网络上放置一个事件监听器,你可以从属性中知道你点击了哪个节点,就像这样

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

p1iqtdky2#

我也有同样的需求。从Simon的答案开始,我添加了以下代码:

network.on("doubleClick", function (params) {
    params.event = "[original event]";
    window.open("/myurl/?id="params.nodes[0],'_blank');
});

params.nodes[0]是我在url中使用的节点的id。
更多的例子可以在this visjs page的源代码中找到(根据PLG的评论更新了链接)。
问题:这对你双击的任何网络对象都有效。我不知道如何让它只在节点上工作。..

相关问题