使用 cytoscape.js 在节点的抽头上动态添加 css class 到 cytoscape 节点
Dynamically add a css class to cytoscape node on the tap of the node using cytoscape.js
我正在尝试在 cytoscape.js 中的节点上添加 class。这是完整代码的link:
https://stackblitz.com/edit/angular-kpnys1?file=src%2Fapp%2Fapp.component.ts
ngViewAfterInit 函数
cy.on("tap", "node", function(evt) {
var node = evt.target;
console.log("tapped " + node.id());
cy.nodes(node).classes("foo");
});
Tap 工作正常,但它不会向节点添加任何 class。这可能吗?
您必须为此使用正确的方法。当前,您的代码调用 node.classes()
,它会删除该节点之前的所有 classes(您基本上覆盖了节点的 classes 数组)。
您想做什么:使用 node.addClass("foo")
并在您的样式表中添加一个条目:
{
selector: ".foo",
css: {
"background-color": "green"
}
}
圆点表示 class,但您可以进一步指定。如果只想将 foo class 添加到父节点,请将 .foo
更改为 :parent.foo
。
但除此之外,您的代码确实有效(有点),单击节点时会出现 class。这是你的 stackblitz 的编辑版本,我添加了提到的更改并为一个父元素提供了 class “bar”。如果单击父节点,节点会将背景色更改为绿色并将其当前 classes 记录到控制台:
我正在尝试在 cytoscape.js 中的节点上添加 class。这是完整代码的link:
https://stackblitz.com/edit/angular-kpnys1?file=src%2Fapp%2Fapp.component.ts
ngViewAfterInit 函数
cy.on("tap", "node", function(evt) {
var node = evt.target;
console.log("tapped " + node.id());
cy.nodes(node).classes("foo");
});
Tap 工作正常,但它不会向节点添加任何 class。这可能吗?
您必须为此使用正确的方法。当前,您的代码调用 node.classes()
,它会删除该节点之前的所有 classes(您基本上覆盖了节点的 classes 数组)。
您想做什么:使用 node.addClass("foo")
并在您的样式表中添加一个条目:
{
selector: ".foo",
css: {
"background-color": "green"
}
}
圆点表示 class,但您可以进一步指定。如果只想将 foo class 添加到父节点,请将 .foo
更改为 :parent.foo
。
但除此之外,您的代码确实有效(有点),单击节点时会出现 class。这是你的 stackblitz 的编辑版本,我添加了提到的更改并为一个父元素提供了 class “bar”。如果单击父节点,节点会将背景色更改为绿色并将其当前 classes 记录到控制台: