如何从外部函数访问'cy.load()'等?

时间:2013-10-10 05:00:38

标签: javascript jquery javascript-events cytoscape.js

我对Javascript和cytoscape.js库都很新。我一直在玩示例代码,但我遇到了一些基本的问题。

基本上,我想要做的是设置我的基本选项和样式,然后能够从我的服务器返回的JSON结构加载我的节点和边。我知道我可以在'ready'函数中使用cy.load,因为我在下面

$(loadCy = function(){

options = {
showOverlay: false,
minZoom: 0.5,
maxZoom: 2,

style: cytoscape.stylesheet()
  .selector('node')
    .css({
      'content': 'data(name)',
      'font-family': 'helvetica',
      'font-size': 14,
      'text-outline-width': 3,
      'text-outline-color': '#888',
      'text-valign': 'center',
      'color': '#fff',
      'width': 'mapData(weight, 30, 80, 20, 50)',
      'height': 'mapData(height, 0, 200, 10, 45)',
      'border-color': '#fff'
    })
  .selector(':selected')
    .css({
      'background-color': '#000',
      'line-color': '#000',
      'target-arrow-color': '#000',
      'text-outline-color': '#000'
    })
  .selector('edge')
    .css({
      'width': 2,
      'target-arrow-shape': 'triangle'
    })
,

ready: function(){
  cy = this;
  cy.load({
     nodes: [
      { data: { id: "n1" } },
      { data: { id: "n2" } }
      ],
     edges: [
      { data: { id: "e1", source: "n1", target: "n2" } }
      ]
    }) 
 }
 };

  $('#cy').cytoscape(options);

     });

但是我想知道是否有办法让文档准备就绪,然后再按照按钮点击访问cy.load?

例如;

<script>
  $("#button").click( function()
  {
     cy.load(<data returned from server>)
  }
</script>
谢谢。

更新:

很抱歉这里是HTML代码。基本上Cytoscape在这个DIV中绘制图形

 <body>
   <div id="cy"></div>
 </body>

1 个答案:

答案 0 :(得分:3)

您的示例中的

var cy未定义,因此js使用id="cy"

获取div

您需要添加此内容(如documentation

$("#cy").cytoscape(options);
var cy = $("#cy").cytoscape("get");