2012-10-10 55 views
1

我如何獲得dojox圖表並將其作爲js對象獲取? 在一個正常的dijit小部件中,它與registry.byId("id")一起使用,但這不適用於dojox圖表。我怎樣才能訪問dojox圖表?

我也試過它與dom.byId,但我需要它作爲一個對象來調用函數,而不是一個DOM節點。

這裏是我的代碼:

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="dijit/themes/claro/claro.css"> 
<script>dojoConfig = {async: true}</script> 
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.js"></script> 
<script> 
require(["dojox/charting/Chart", "dojox/charting/axis2d/Default", "dojox/charting/plot2d/Lines", "dojox/charting/plot2d/Grid", "dojox/charting/themes/Claro", "dojo/ready"], 
    function(Chart, Default, Lines, Grid, theme, ready){ 
    ready(function(){ 
    var chart1 = new Chart("chartId"); 
    chart1.setTheme(theme); 
    chart1.addPlot("default", {type: Lines}); 
    chart1.addPlot("Grid", {type: "Grid"}); 
    chart1.addAxis("x",{}); 
    chart1.addAxis("y", {vertical: true}); 
    chart1.addSeries("Visits",[ 
     { x: 1, y: 200 }, 
     { x: 2, y: 185 }, 
     { x: 3, y: 100 }, 
     { x: 4, y: 110 }, 
     { x: 5, y: 130 }, 
     { x: 6, y: 70 }, 
     { x: 7, y: 30 }, 
     { x: 8, y: 200 } 
    ]); 

    chart1.render(); 
    }); 
}); 
require(["dojo/ready", "dijit/form/Button", "dojo/dom"], function(ready, Button, dom){ 
    ready(function(){ 
     var button = new Button({ 
      label: "Change my label" 
     }, "buttonId"); 
    }); 
}); 

function tryToAccess() 
{ 
    require(["dojo/ready", "dijit/registry", "dojo/dom"], function(ready, registry, dom){ 
     ready(function(){ 
      var button = registry.byId("buttonId"); 
      console.log(button); /*returns an object*/ 
      button.set("label","successfully changed!"); 

      /*var chart = ????????????????; */ 
     }); 
    }); 
} 
</script> 
</head> 
<body class="claro"> 
<button id="buttonId"></button> 
<div id="chartId" style="height: 300px;"></div> 

<!-- JUST 4 DEBUGGING --> 
<button onClick="tryToAccess();">try to access</button> 
</body> 
</html> 

回答

0

dojox.charting.Chart不是一個小部件,請嘗試使用dojox.charting.widget.Chart代替。我認爲registry.byId會與此合作。

var chart1_widget = new Chart({}, "chartId"); 
var chart1 = chart1_widget.chart; 
chart1.setTheme(theme); 
... 
+0

它不起作用。 (不能使用'in'運算符來搜索chartId中的'id')。另外,如果我嘗試在小部件中設置標識(沒有錯誤,但也沒有圖表) – Weili

+1

使用小部件時,使用情況稍有變化,請參閱我添加的示例。 – opiethehokie