2017-02-09 2 views
0

누구든지 노드를 다시 그리도록 트리거하는 방법을 알고 있습니까? 기본 데이터 객체가 'label'속성을 업데이트하고 레이블을 다시 그리기 위해 cytoscape를 트리거 할 수있는 유일한 방법이있는 경우가 있습니다.Cytoscape.js에서 데이터가 변경된 후 어떻게 노드를 다시 그리게 할 수 있습니까?

  1. .selectify() 다음 노드의 .unselectify() 중 일부 조합을 호출하십시오.
  2. .data('label', ...)을 사용하여 레이블을 교체하십시오. 실제로 자체 레이블로 교체합니다.

이 두 가지는 모두 해킹 된 느낌이 들며 API에서 확실치 않은 부분이 있다고 생각합니다. 누구든지 도와 줄 수 있습니까?

감사합니다. Ryan.

답변

0

Cytoscape API를 사용하지 않고 Cytoscape에 제공 한 데이터를 업데이트하지 않습니다.

node.data().foo.bar = 'baz'을 수행하면 Cytoscape에서 사용자가 아무 것도 변경하지 않았다는 것을 알 수 있습니다.

node.data('foo.bar', 'baz')을 수행하면 Cytoscape에서 모델을 변경 한 것을 알 수 있습니다.

대부분의 앱과 마찬가지로 앱에는 Cytoscape보다 상위 레이어에있는 모델이있을 것입니다. 따라서 실제 모델이 변경되면 Cytoscape를 모델의 JSON 표현으로 업데이트하십시오. 모델에서 이벤트 이미 터를 사용한다고 가정하면 modelObj.on('change', function(){ this.node.data(this.json()) })과 같은 작업을 수행하면됩니다.

관련 문제