javascript - 如何将对象传递给 d3-context-menu 动态菜单列表
问题描述
对于一个项目,我使用这个上下文菜单:https ://www.npmjs.com/package/d3-context-menu
“动态菜单列表”(https://www.npmjs.com/package/d3-context-menu#dynamic-menu-list)允许将菜单编写为函数。这工作正常。但是,函数方法允许将数据传递给菜单以区分要显示的项目。
我在 D3 树布局中调用菜单,如下所示:
nodeEnter.append("circle")
.attr('class', function(d) {
return 'nodeCircle ' + d.state;})
.attr("r", 0)
.style("fill", function(d) {
return d._children ? "lightsteelblue" : "#fff";
})
.on("mouseover", function(d) {
show_tooltip(d);
})
.on("mouseout", function(d) {
hide_tooltip(d);
})
.on("contextmenu", d3.contextMenu(node_menu)
);
这可行,但我想将“d”传递给“node_menu”。
我已经尝试过的:
d3.contextMenu(node_menu(d))
=> "d" 只是值 "1"
.on("contextmenu", function(d) {
d3.contextMenu(node_menu(d));
})
=> 根本不显示上下文菜单,如果我添加返回也不显示
如何将“d”对象传递给“node_menu”函数?
编辑:
也许有帮助,“node_menu”功能:
var node_menu = function (data) {
console.log('data:');
console.log(data);
if (data.depth == 6) {
return node_menu_v1;
}
else{
return node_menu_v2;
}
};
解决方案
data
在数组内部或外部创建多个菜单结构。
var data = [
{v: 1, menu: menu1},
{v: 2, menu: menu2},
{v: 3, menu: menu3}
];
...
.on('contextmenu', function(d) { d3.contextMenu(d.menu)(d);} );
推荐阅读
- azure-devops - 如何从 Azure DevOps API 响应中排除已删除的用户/组
- javascript - socket.io web client: no error event on lost connection with the server?
- rundeck - How do I modify existing jobs to switch owner?
- r - map column of one data frame with another data frame column in R (map a child element which is created from parent)
- sql-server - Perl, SQL Server use of @@IDENTITY
- r - problems using data.table in question template R-exams
- mongodb - mongoDB对多个字段进行排序
- php - 尽管插入成功,但数据未添加到数据库中
- visual-studio-code - Visual Studio Code 的 Marklogic XQY 调试器
- javascript - 如何使用animejs制作动画?