cy.fit() 不会立即生效,它需要超时才能适应图表。细胞景观js
cy.fit() does not work immediately, it needs timeout to fit the graph. Cytoscape js
所以在初始化图表后,我想通过使用 cy.fit()
使其适合其 div。我这样做了:
var cy = cytoscape({
container: document.getElementById("cy"),
elements: {
nodes: nodes,
edges: edges
},
layout: {
name: 'dagre',
},
style: [
{
selector: 'node',
css: {
'label': 'data(id)',
'background-color': '#808080'
}
]
});
所以在这部分之后如果我这样做
cy.fit()
它不起作用。但如果我这样做:
setTimeout(() => {
cy.fit();
},1000);
有效。然而,首先显示未拟合的图形,然后在 1000 毫秒后显示正确的图形拟合。因此当一个页面被加载时,看起来图形被写了两次。
我该如何解决这个问题?有没有办法用这个 'fit' 选项来初始化图形?或任何其他修复方法?
谢谢
Cytoscape.js 通过 cy.ready() 处理这个问题。像这样使用它:
var cy = cytoscape({
container: document.getElementById("cy"),
elements: {
nodes: nodes,
edges: edges
},
layout: {
name: 'dagre',
},
style: [{
selector: 'node',
css: {
'label': 'data(id)',
'background-color': '#808080'
}
}]
});
cy.ready(function() {
cy.fit();
});
此外,您可以为此使用布局选项 fit
:
layout: { name: 'dagre', fit: true }
所以在初始化图表后,我想通过使用 cy.fit()
使其适合其 div。我这样做了:
var cy = cytoscape({
container: document.getElementById("cy"),
elements: {
nodes: nodes,
edges: edges
},
layout: {
name: 'dagre',
},
style: [
{
selector: 'node',
css: {
'label': 'data(id)',
'background-color': '#808080'
}
]
});
所以在这部分之后如果我这样做
cy.fit()
它不起作用。但如果我这样做:
setTimeout(() => {
cy.fit();
},1000);
有效。然而,首先显示未拟合的图形,然后在 1000 毫秒后显示正确的图形拟合。因此当一个页面被加载时,看起来图形被写了两次。
我该如何解决这个问题?有没有办法用这个 'fit' 选项来初始化图形?或任何其他修复方法?
谢谢
Cytoscape.js 通过 cy.ready() 处理这个问题。像这样使用它:
var cy = cytoscape({
container: document.getElementById("cy"),
elements: {
nodes: nodes,
edges: edges
},
layout: {
name: 'dagre',
},
style: [{
selector: 'node',
css: {
'label': 'data(id)',
'background-color': '#808080'
}
}]
});
cy.ready(function() {
cy.fit();
});
此外,您可以为此使用布局选项 fit
:
layout: { name: 'dagre', fit: true }